Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Python OpenCV-Gesichtserkennungstechnologie

Detaillierte Erläuterung der Python OpenCV-Gesichtserkennungstechnologie

高洛峰
高洛峰Original
2016-10-18 14:54:381645Durchsuche

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:

Detaillierte Erläuterung der Python OpenCV-Gesichtserkennungstechnologie 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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn