Bonjour à tous! Cette fois, en utilisant python et OpenCV, j'ai créé un programme qui peut démarrer la caméra et écrire une mosaïque sur un visage humain en temps réel. Peut-être que quelqu'un d'autre a déjà écrit l'article ... peut-être qu'il est sorti. Faisons-le quand même!
Le déroulement du programme est ici.
Démarrez la caméra en utilisant OpenCV.
kido.py
import cv2
cap = cv2.VideoCapture(0)
while True:
ret, img = cap.read()
cv2.imshow('video image', img)#'video image'Est le nom de la fenêtre de la caméra
key = cv2.waitKey(10)
if key == 27: #Quitter avec la touche ESC
break
cap.release()
cv2.destroyAllWindows()
Vous pouvez maintenant mettre la caméra en orbite. Appuyez sur la touche Echap et la fenêtre se fermera.
OpenCV est livré avec un classificateur de caractéristiques de type Haar. Pratique! Cependant, il ne peut être géré que si le fichier est enregistré. Cette fois, je veux reconnaître le visage humain, donc je vais gérer haarcascade_frontalface_alt.xml de ici.
À propos, le classificateur de caractéristiques de type Haar détecte le visage en extrayant la quantité de fonctionnalités tout en modifiant la taille du filtre de type Haar par la fonctionnalité de type Haar en se concentrant sur la différence de luminosité par rapport à la quantité de fonctionnalités pouvant prendre la fonctionnalité de l'image et l'addaboost. Je vais. Maintenant, démarrons la caméra et laissons-la reconnaître le visage humain.
ninsiki.py
import cv2
#Haar-comme Être capable de gérer les classificateurs d'entités.
face_cascade_path="haarcascade_frontalface_alt.xml" #Veuillez spécifier le chemin.
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)
#Entourez le visage d'une personne dans une forme rectangulaire
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: #Quitter avec la touche ESC
break
cap.release()
cv2.destroyAllWindows()
Vous pouvez maintenant détecter le visage humain.
Sans penser que le traitement de la mosaïque est difficile, l'image du visage est réduite une fois, puis agrandie et collée sur l'image du visage.
mozaic.py
import cv2
#Haar-comme Être capable de gérer les classificateurs d'entités.
face_cascade_path="haarcascade_frontalface_alt.xml"
face_cascade = cv2.CascadeClassifier(face_cascade_path)
ratio = 0.07 #La modification de la valeur ici modifie la rugosité de la mosaïque.
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:
#Le traitement de la mosaïque se fait en deux lignes individuelles.
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: #Quitter avec la touche ESC
break
cap.release()
cv2.destroyAllWindows()
C'était terminé.
Cette fois, nous avons reconnu le visage en temps réel et appliqué un traitement de mosaïque sur le visage. Puisqu'il est classé par différence de luminosité, même une caricature réagira. (Il y a pas mal de faux positifs), mais OpenCV est amusant car vous pouvez essayer la détection de visage (reconnaissance de visage) avec un code court. Cela peut être difficile à comprendre car je n'ai jamais envoyé d'informations comme des blogs. Désormais, j'aimerais diffuser des informations et améliorer mes compétences en écriture, et mon rêve est de devenir une personne capable de jouer avec la technologie, alors regardez avec des yeux chaleureux. Merci d'avance. Eh bien!
Recommended Posts