[PYTHON] Gesichtserkennung / Schneiden mit OpenCV

Einführung

Ich habe den Code geändert, der das Gesicht im Bild erkennt und in einen quadratischen Rahmen einschließt, und einen Code erstellt, der als Datei ausgeschnitten wird.

Bibliotheksimport

Importieren Sie Bibliotheken wie OpenCV und Pillow.

import os
import subprocess
from PIL import Image
import cv2 as cv

dir0 = 'org' 
dir1 = 'png'
dir2 = 'png_resize'
dir3 = 'face'

Bildvorbereitung

Legen Sie das Originalbild (JPG, Größe 500 x 334 Pixel) in den Organisationsordner. Konvertieren Sie dies in eine PNG-Datei, passen Sie die Größenbreite auf 600 Pixel an und speichern Sie sie im Ordner png_resize.

files0 = os.listdir(dir0)
files0.sort()

for file in files0:

    if '.jpg'  in file:        
        command = 'sips --setProperty format png ' + dir0 +'/' + file +  ' --out ' + dir1 +'/' +  file.replace('.jpg','.png') 
        subprocess.call(command, shell=True)
        print(file) 

files1 = os.listdir(dir1)
files1.sort()

# aaa.jpg  

for file in files1:   
    if '.png' in file:   
        img0 = os.path.join(dir1, file)
        img0_img = Image.open(img0)
        h = img0_img.height
        w = img0_img.width
        img1_img = img0_img.resize((600,round(600*h/w)))
        img1 = os.path.join(dir2, file) 
        img1_img.save(img1)
        print(file) 

# aaa.png

files2 = os.listdir(dir2)
files2.sort()    

aaa.png

Gesichtsklassifikator installiert

Gesichtsklassifizierer sind unter [hier] verfügbar (https://github.com/opencv/opencv/blob/master/data/haarcascades/ "hier").

face_cascade = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
#face_cascade = cv.CascadeClassifier('haarcascade_profileface.xml')

Ausführung des Gesichtsklassifikators, Gesichtsbildausschnitt

Schneiden Sie das Gesichtsbild aus. Der Ausschnittbereich ist 10px breiter nach oben, unten, links und rechts als der Erfassungsbereich.

for file in files2:
    if '.png' in file:
        dirfile = os.path.join(dir2, file) 
        img = cv.imread(dirfile)
        gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
        
        faces = face_cascade.detectMultiScale(gray, 1.3, 5)
        
        for (x,y,w,h) in faces:
            face = img[y-10:y+h+10, x-10:x+w+10]
            face_name = str(file.strip('.png'))+'_'+str(x)+'_'+str(y)+'.png'
            dirface = os.path.join(dir3,face_name)
            facefile = cv.imwrite(dirface, face) 
            #cv.rectangle(img,(x-10,y-10),(x+w+10,y+h+10),(255,0,0),2)
            print(face_name)  

# aaa_152_22.png
# aaa_11_70.png
# aaa_438_41.png
# aaa_79_106.png
# aaa_385_140.png
# aaa_190_175.png
# aaa_269_171.png
# aaa_76_206.png
# aaa_527_257.png
# aaa_91_277.png
# aaa_254_330.png
# aaa_446_348.png  

Aus den obigen Bildern wurden insgesamt 12 Gesichtsbilder ausgeschnitten. Wenn Sie den größten Teil des Gesichts sehen können, wissen Sie, dass der Ausschnitt erfolgreich war.

aaa_91_277.pngaaa_79_106.pngaaa_76_206.pngaaa_527_257.pngaaa_446_348.pngaaa_438_41.png aaa_385_140.pngaaa_269_171.pngaaa_254_330.pngaaa_190_175.pngaaa_152_22.pngaaa_11_70.png

Am Ende

Es scheint, dass es verwendet werden kann, wenn eine Liste mit einem Foto aus einem Gruppenfoto erstellt wird. Es wäre für jeden praktisch, den trainierten Klassifikator zu verwenden, wenn er als Kaskadendatei veröffentlicht würde.

Referenz

https://docs.opencv.org/4.1.0/d7/d8b/tutorial_py_face_detection.html https://github.com/opencv/opencv/tree/master/data/haarcascades

Recommended Posts

Gesichtserkennung / Schneiden mit OpenCV
Gesichtserkennung mit OpenCV von Python
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Gesichtserkennung mit Kamera mit opencv3 + python2.7
Ich habe versucht, das Gesicht mit OpenCV zu erkennen
Gesichtserkennung mit Edison
[python, openCV] base64 Gesichtserkennung in Bildern
Gesichtserkennung durch Amazon Rekognition
Versuchen Sie die Gesichtserkennung mit Python
Bilderkennung mit Keras + OpenCV
Anime-Gesichtserkennung mit OpenCV
[OpenCV] Persönliche Identifikation mit Gesichtsfoto
Erste Anime-Gesichtserkennung mit Chainer
Schneiden Sie das Gesicht mit Python + OpenCV aus
Objekterkennung mit openCV durch traincascade
Gesichtserkennung in Echtzeit mit von getUserMedia [HTML5, openCV] aufgenommenem Video
Serverlose Gesichtserkennungs-API mit Python
ZOOM, indem Sie Ihr Gesicht durch ein Twitter-Symbol mit openCV-Gesichtserkennung ersetzen
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Leistungsvergleich des Gesichtsdetektors mit Python + OpenCV
[Python3] [Ubuntu16] [Docker] Versuchen Sie die Gesichtserkennung mit OpenFace
Größenänderung, Mosaik, Gesichtserkennung mit OpenCV, manchmal Elefantenstempel
Katze zurück mit OpenCV erkennen
Binarisierung mit OpenCV / Python
Bilderkennung mit Keras
Datenerweiterung mit openCV
Einfache TopView mit OpenCV
Stolpern Sie mit opencv3 von Homebrew
Versuchen wir nun die Gesichtserkennung mit Chainer (Vorhersagephase).
Einfacher Gesichtserkennungsversuch mit Jetson Nano und Webkamera
Versuchen wir nun die Gesichtserkennung mit Chainer (Lernphase)
Verbessern Sie schnell die Erkennungsgenauigkeit, indem Sie Parameter mit openCV-Gesichtserkennung angeben
"Apple-Verarbeitung" mit OpenCV3 + Python3
Versuchen Sie die Kantenerkennung mit OpenCV
Bildbearbeitung mit Python OpenCV
Kameraerfassung mit Python + OpenCV
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
[Python] Verwenden von OpenCV mit Python (Basic)
Ein Memo, wenn mit Python + OpenCV schnell ein Gesicht erkannt wird
Binarisieren Sie Fotodaten mit OpenCV
Loop-Video-Laden mit opencv
Ich habe versucht, das Gesicht aus dem Video zu erkennen (OpenCV: Python-Version)
Objekt-Co-Lokalisierung zur Gesichtserkennung
Holen Sie sich Bildfunktionen mit OpenCV
Gesichtserkennung mit Haar Cascades
Probieren Sie OpenCV mit Google Colaboratory aus
Erstellung eines Kaskadenklassifikators mit opencv
Verwenden von OpenCV mit Python @Mac
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
Leuchtendes Leben mit Python und OpenCV
Grundlagen der Echtzeit-Bildverarbeitung mit opencv
Gesichtserkennung mit YOLO Face (Windows10, Python3.6)
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Neuronales Netzwerk mit OpenCV 3 und Python 3
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Gesichtserkennung mit Lambda (Python) + Erkennung
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Löschen Sie bestimmte Farben mit OpenCV + PySimpleGUI
Einführung von OpenCV in Mac mit Homebrew