Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Python OpenCV-Gesichtserkennungstechnologie
Gesichtserkennung sehen wir immer in Science-Fiction-Filmen und jetzt können wir sie auch durch Programmierung implementieren. Haha~~
OpenCV ist eine Open-Source-Computer-Vision-Bibliothek von Intel®. Es besteht aus einer Reihe von C-Funktionen und einer kleinen Anzahl von C-Klassen, die viele gängige Algorithmen in der Bildverarbeitung und Computer Vision implementieren.
OpenCV verfügt über eine plattformübergreifende Mid- und High-Level-API mit mehr als 300 C-Funktionen. Es bestehen keine Abhängigkeiten zu anderen externen Bibliotheken – einige können jedoch verwendet werden. Es bietet außerdem Schnittstellen in Python, Ruby, MATLAB und anderen Sprachen und implementiert viele gängige Algorithmen in der Bildverarbeitung und Computer Vision.
Im Großen und Ganzen ist die Gesichtserkennungsfunktion von OpenCV also sehr gut.
Das Rendering ist wie folgt:
Als nächstes werden wir Python OpenCV verwenden, um die Gesichtserkennung zu implementieren.
Entwicklungs- und Betriebsumgebung:
Centos5.5
OpenCV
Python2.7
PIL
Der Code unten:
#!/ usr /bin/python
# -*- Kodierung: UTF-8 -*-
# face_detect.py
# Gesichtserkennung mit OpenCV. Basierend auf Beispielcode von:
# http://www.pythontab.com
# Verwendung: python face_detect.py
import sys, os
#Führen Sie die entsprechenden Komponenten in die OpenCV-Bibliothek ein
von opencv.cv import *
from opencv.highgui import *
#Introduce PIL Library
from PIL import Image, ImageDraw
from math import sqrt
def discoverObjects(image ):
#Konvertieren Sie zuerst das Bild in den Graustufenmodus, um die Gesichtsposition zu ermitteln
greyscale = cvCreateImage(cvSize(image.width, image.height), 8, 1)
cvCvtColor(image, greyscale, CV_BGR2GRAY )
storage = cvCreateMemStorage(0)
cvClearMemStorage(storage)
cvEqualizeHist(grayscale, greyscale)
cascade = cvLoadHaarClassifierCascade(
'/usr/share/opencv/ haarcascades/haarcascade_frontalface_default.xml',
cvSize(1,1))
faces = cvHaarDetectObjects(grayscale, cascade, storage, 1.1, 2,
CV_HAAR_DO_CANNY_PRUNING, cvSize(20,20))
result = []
für f in Flächen:
result.append((f.x, f.y, f.x f.width, f.y f.height))
Ergebnis zurückgeben
def greyscale(r, g, b):
return int(r * .3 g * .59 b * .11)
def process(infile, outfile):
image = cvLoadImage(infile);
if image:
faces = discoverObjects(image)
im = Image.open(infile)
if faces:
draw = ImageDraw.Draw(im)
für f in Gesichtern:
draw.rectangle(f, outline=(255, 0, 255))
im.save(outfile, "JPEG", Qualität =100)
else:
print „Fehler: Gesichter auf %s können nicht erkannt werden“ % infile
if __name__ == "__main__":
process('input.jpg', ' Output.jpg')
Wenn Sie das obige Beispiel nicht verstehen, spielt es keine Rolle, da wir viele Funktionen und Methoden in der Bibliothek verwenden Verstehen Sie, wir können es online überprüfen oder das Handbuch verwenden. Solange Sie diesen Code mithilfe dieser verstehen, ist es in Ordnung. Das Wichtigste ist, die Idee der Gesichtserkennungsimplementierung zu beherrschen