Hallo zusammen! Dieses Mal habe ich mit Python und OpenCV ein Programm erstellt, mit dem die Kamera gestartet und in Echtzeit ein Mosaik auf ein menschliches Gesicht geschrieben werden kann. Vielleicht hat jemand anderes den Artikel bereits geschrieben ... vielleicht ist er raus. Lass es uns trotzdem tun!
Der Ablauf des Programms ist hier.
Starten Sie die Kamera mit OpenCV.
kido.py
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
cv2.imshow('video image', img)#'video image'Ist der Name des Kamerafensters
key = cv2.waitKey(10)
if key == 27: #Beenden Sie mit der ESC-Taste
break
cap.release()
cv2.destroyAllWindows()
Jetzt können Sie die Kamera umkreisen. Drücken Sie die Esc-Taste und das Fenster wird geschlossen.
OpenCV wird mit einem Haar-ähnlichen Feature-Klassifikator geliefert. Praktisch! Es kann jedoch nur behandelt werden, wenn die Datei gespeichert ist. Dieses Mal möchte ich das menschliche Gesicht erkennen, also werde ich haarcascade_frontalface_alt.xml von hier behandeln.
Übrigens erkennt der Haar-ähnliche Merkmalsklassifizierer das Gesicht, indem er die Merkmalsmenge extrahiert, während die Größe des Haar-ähnlichen Filters durch das Haar-ähnliche Merkmal geändert wird, wobei der Unterschied in der Helligkeit von der Merkmalsmenge, die das Merkmal des Bildes und des Addaboost aufnehmen kann, berücksichtigt wird. Ich werde. Lassen Sie uns nun die Kamera starten und das menschliche Gesicht erkennen.
ninsiki.py
import cv2
#Haar-wie In der Lage sein, Feature-Klassifikatoren zu behandeln.
face_cascade_path="haarcascade_frontalface_alt.xml" #Bitte geben Sie den Pfad an.
face_cascade = cv2.CascadeClassifier(face_cascade_path)
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
#Schließen Sie das Gesicht einer Person in einer rechteckigen Form ein
for x, y, w, h in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
face = img[y: y + h, x: x + w]
face_gray = gray[y: y + h, x: x + w]
cv2.imshow('video image', img)
key = cv2.waitKey(10)
if key == 27: #Beenden Sie mit der ESC-Taste
break
cap.release()
cv2.destroyAllWindows()
Jetzt können Sie das menschliche Gesicht erkennen.
Ohne zu glauben, dass die Mosaikverarbeitung schwierig ist, wird das Gesichtsbild einmal verkleinert, dann vergrößert und auf das Gesichtsbild eingefügt.
mozaic.py
import cv2
#Haar-wie In der Lage sein, Feature-Klassifikatoren zu behandeln.
face_cascade_path="haarcascade_frontalface_alt.xml"
face_cascade = cv2.CascadeClassifier(face_cascade_path)
ratio = 0.07 #Wenn Sie hier den Wert ändern, ändert sich die Rauheit des Mosaiks.
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
for x, y, w, h in faces:
#Die Mosaikverarbeitung erfolgt in zwei einzelnen Zeilen.
small = cv2.resize(img[y: y+h, x: x+w], None,fy=ratio, fx=ratio,interpolation=cv2.INTER_NEAREST)
img[y: y + h, x: x + w] = cv2.resize(small, (w, h), interpolation=cv2.INTER_NEAREST)
cv2.imshow('video image', img)
key = cv2.waitKey(10)
if key == 27: #Beenden Sie mit der ESC-Taste
break
cap.release()
cv2.destroyAllWindows()
Es wurde abgeschlossen.
Dieses Mal haben wir das Gesicht in Echtzeit erkannt und die Mosaikverarbeitung auf das Gesicht angewendet. Da es durch den Helligkeitsunterschied klassifiziert wird, reagiert sogar eine Karikatur. (Es gibt einige Fehlalarme), aber OpenCV macht Spaß, da Sie die Gesichtserkennung (Gesichtserkennung) mit einem Funktionscode ausprobieren können. Es kann schwierig sein zu verstehen, weil ich nie Informationen wie Blogs gesendet habe. Von nun an möchte ich Informationen verbreiten und meine Schreibfähigkeiten verbessern. Mein Traum ist es, eine Person zu werden, die mit Technologie spielen kann. Bitte schauen Sie mit warmen Augen zu. Danke im Voraus. Na dann!
Recommended Posts