Django рдореЗрдВ рдордХреНрдЦреА рдкрд░ рд╕рд░рд▓ рдЪреЗрд╣рд░рд╛ рдкрд╣рдЪрд╛рди

рдЕрдЪреНрдЫрд╛ рджрд┐рди!

рдореЗрд░рд╛ рдирд╛рдо рдПрдВрдбреНрд░реА рд╕реЛрдмреЛрд▓реЗрд╡ рд╣реИ рдФрд░ рдЖрдЬ рд╣рдо 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 (рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг)ред

All Articles