рдЕрдЪреНрдЫрд╛ рджрд┐рди!рдореЗрд░рд╛ рдирд╛рдо рдПрдВрдбреНрд░реА рд╕реЛрдмреЛрд▓реЗрд╡ рд╣реИ рдФрд░ рдЖрдЬ рд╣рдо Django рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ "рдмрди" рдмрдирд╛рдПрдВрдЧреЗ, рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЪреЗрд╣рд░рд╛ рдлреЛрдЯреЛ рдореЗрдВ рд╣реИ (рдЬреЛ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ)редрдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ OpenCV рдФрд░ рдЦрд╛рд▓реА рд╕рдордп рдХреЗ 5 рдорд┐рдирдЯ рдЪрд╛рд╣рд┐рдПред рдЬрд╛рдУредрд╕реНрдерд╛рдкрдирд╛
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:FROM python:3.8.3-buster
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
gcc && apt-get install -y \
libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev libjpeg-dev libfreetype6-dev python-dev libpq-dev python-dev libxml2-dev libxslt-dev postgresql-client git && \
apt-get install -y libxrender1 libxext-dev fontconfig && \
pip3 install -U pip setuptools
COPY ./requirements.txt /home/
* * *
рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝реЗрдВредopencv-python
matplotlib
numpy
рдлреЗрд╕ рдЪреЗрдХ рдлрдВрдХреНрд╢рди detect_face
Utils.py рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрдиреНрдп рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рд╡рд╣рд╛рдВ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЬреЛрдбрд╝реЗрдВ:import cv2 as cv
import numpy as np
def detect_face(in_memory_photo):
face_cascade = cv.CascadeClassifier(cv.__path__[0] + "/data/haarcascade_frontalface_default.xml")
in_memory_photo = in_memory_photo.read()
nparr = np.fromstring(in_memory_photo, np.uint8)
img = cv.imdecode(nparr, 4)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
if len(faces) > 0:
return True
else:
return False
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдлреЙрд░реНрдо рдореЗрдВ рдПрдХреАрдХрд░рдг
рд╣рдорд╛рд░реЗ рд╕рдорд╛рд░реЛрд╣ рдЖрдпрд╛рдд рдХрд░реЗрдВ:from main.utils import detect_face
рдФрд░ рдПрдХ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддреЗ рд╕рдордп "рдЪреЗрд╣рд░реЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ"редif request.method == "POST":
form = RegistrationForm(request.POST, request.FILES)
if form.is_valid():
try:
in_memory_uploaded_file = request.FILES["photo"]
except:
in_memory_uploaded_file = None
if not in_memory_uploaded_file or not detect_face(in_memory_uploaded_file):
messages.add_message(request, messages.WARNING, _("You can only upload a face photo. Please try to uploading a different photo."))
return HttpResponseRedirect(reverse("main:profile_registration"))
рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
import os
import cv2 as cv
import numpy as np
def detect_face(in_memory_photo):
face_cascade = cv.CascadeClassifier(cv.__path__[0] + "/data/haarcascade_frontalface_default.xml")
in_memory_photo = in_memory_photo.read()
nparr = np.fromstring(in_memory_photo, np.uint8)
img = cv.imdecode(nparr, 4)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
if len(faces) > 0:
return True
else:
return False
with open(os.path.dirname(os.path.abspath(__file__)) + '/photo.jpg', 'rb') as in_memory_photo:
is_it_face = detect_face(in_memory_photo)
print(is_it_face)
рдмрд╕ рдЗрддрдирд╛ рд╣реАредрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ (рдпрджрд┐ рдЖрдкрдХреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рдПрдХ рд╕рд░рд▓ рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)редрдЙрдкрдпреЛрдЧреА рдХрдбрд╝рд┐рдпрд╛рдБ
рдУрд░рд▓рдбреИрд╕рд┐рдПрд╕реЗрдВрд╕.com/ face- detection- in- 2- minutes- using- opencv- python- 90f89d7c0f81 new-friend.org/ru/195/2800/12918/profile-registration (рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг)ред