[PYTHON] Activons la caméra et appliquons la mosaïque au visage humain (OpenCV)

1.Tout d'abord

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!

2. Procédure

Le déroulement du programme est ici.

  1. Démarrez la caméra.
  2. Reconnaissez le visage d'une personne. (Classificateur d'entités de type Haar)
  3. Mosaïque la zone où il y a un visage humain. c'est tout.

3. Démarrez la caméra.

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()

video image.png

Vous pouvez maintenant mettre la caméra en orbite. Appuyez sur la touche Echap et la fenêtre se fermera.

4. Reconnaître le visage humain (classificateur de caractéristiques de type Haar)

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()

video image.png Vous pouvez maintenant détecter le visage humain.

5. Appliquer la mosaïque

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()

video image.png C'était terminé.

6. Résumé

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

Activons la caméra et appliquons la mosaïque au visage humain (OpenCV)
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Appliquons la couleur de l'image de marque à la carte des couleurs de matplotlib!
Un serveur qui renvoie le nombre de personnes devant la caméra avec bottle.py et OpenCV
Créez une caméra de surveillance WEB avec Raspberry Pi et OpenCV
Créer un environnement Python et transférer des données vers le serveur
Tirez en accéléré à partir d'une caméra PC en utilisant Python, OpenCV
Je souhaite enregistrer l'heure d'exécution et conserver un journal.
Écrivez un programme pour résoudre le Rubik Cube 4x4x4! 2. Algorithme
Écrivez un programme pour résoudre le Rubik Cube 4x4x4! 3. Mise en œuvre
Comment formater un tableau à l'aide de Pandas Appliquer, pivoter et permuter le niveau
Ecrire un programme qui abuse du programme et envoie 100 e-mails
Je veux vérifier la position de mon visage avec OpenCV!
Le moyen le plus rapide d'obtenir régulièrement des images de caméra avec opencv de python