Détection de visage avec Python + OpenCV

Détection de visage avec Python + OpenCV

Installation

C'est un peu gênant, alors reportez-vous à ce qui suit

Install OpenCV 3.0 and Python 2.7+ on Ubuntu

Install OpenCV 3.0 and Python 2.7+ on OSX

Utilisation d'OpenCV et de python sur Mac

Installer l'environnement Python

code

L'emplacement du classificateur est modifié en fonction de l'environnement which python Et which python3 Quand j'ai recherché l'emplacement de python, j'ai pensé que s'il était installé, il pourrait être à proximité.

detect_face.py


# -*- coding: utf-8 -*-

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import cv2, os, sys, imghdr, shutil

CLASSIFIERS = (
    'haarcascade_frontalcatface_extended.xml',
    'haarcascade_frontalcatface.xml',
    'haarcascade_frontalface_alt_tree.xml',
    'haarcascade_frontalface_alt.xml',
    'haarcascade_frontalface_alt2.xml',
    'haarcascade_frontalface_default.xml',
)
PATH_CLASSIFIER = '{python_dir}/{classifier_dir}/{classifier}'.format(
    python_dir = os.path.split(sys.executable)[0],
    classifier_dir = '../share/OpenCV/haarcascades',
    classifier = CLASSIFIERS[4]
)
CWD = os.getcwd()
DIR_ORIGIN = CWD + '/images/'
DIR_DONE = CWD + '/done/'
DIR_NONE = CWD + '/none/'
DIR_DESTINATION = CWD + '/faces/'

classifier = cv2.CascadeClassifier(PATH_CLASSIFIER)

def mkdir(path):
    dirs = path.split('/')
    current = ''
    for d in dirs:
        current += d + '/'
        if not os.path.exists(current):
            os.mkdir(current)

def moveFile(origin_path, dest_dir):
    mkdir(dest_dir)
    shutil.move(origin_path, dest_dir)

def getFaces(path_full):
    image = cv2.imread(path_full)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    faces = classifier.detectMultiScale(gray)
    path, name = os.path.split(path_full)
    path_destination = path.replace(DIR_ORIGIN, DIR_DESTINATION)
    dir_done = path.replace(DIR_ORIGIN, DIR_DONE)
    dir_none = path.replace(DIR_ORIGIN, DIR_NONE)
    base_name = os.path.join(path_destination, name[:name.rfind('.')])
    count = len(faces)
    for i in range(count):
        x, y , w, h = faces[i]
        crop = image[y : y + h, x : x + w]
        file_name = base_name
        file_name += ('_' + str(i + 1)) if count > 1 else ''
        file_name += '.jpg'
        mkdir(path_destination)
        cv2.imwrite(file_name, crop, [cv2.IMWRITE_JPEG_QUALITY, 100])
    if count:
        moveFile(path_full, dir_done)
    else:
        moveFile(path_full, dir_none)
    return count

def isEmpty(dir_):
    return True if not os.listdir(dir_) else False

count = 0
for path, subdirs, files in os.walk(DIR_ORIGIN):
    for name in files:
        path_full = os.path.join(path, name)
        if imghdr.what(path_full) in ['jpeg']:
            count = getFaces(path_full)
    if count:
        if isEmpty(path):
            os.rmdir(path)
        count = 0

Recommended Posts

Détection de visage avec Python + OpenCV
Détection de visage d'anime avec OpenCV
Hello World et détection de visage avec OpenCV 4.3 + Python
Détection de visage avec YOLO Face (Windows10, Python3.6)
Détection de visage avec Lambda (Python) + Rekognition
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Essayez la reconnaissance faciale avec python + OpenCV
Découpez le visage avec Python + OpenCV
Reconnaissance faciale avec caméra avec opencv3 + python2.7
[Python] Détection de visage par OpenCV (Haar Cascade)
Binarisation avec OpenCV / Python
[python, openCV] base64 Reconnaissance faciale dans les images
Comparaison des performances du détecteur de visage avec Python + OpenCV
Redimensionner, mosaïque, détection de visage avec OpenCV, parfois tampon d'éléphant
Reconnaissance faciale avec OpenCV de Python
"Traitement Apple" avec OpenCV3 + Python3
Essayez la détection des bords avec OpenCV
Édition d'image avec python OpenCV
Capture de caméra avec Python + OpenCV
[Python] Utilisation d'OpenCV avec Python (basique)
Résumé de la détection de visage en Python
Reconnaissance faciale / coupe avec OpenCV
Détection de falsification de la blockchain avec Python
Essayez la reconnaissance faciale avec Python
Détection de visage avec Haar Cascades
Utiliser OpenCV avec Python @Mac
[Ubuntu] [Python] Comparaison de la détection de visage entre dlib et OpenCV
Briller la vie avec Python et OpenCV
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Réseau neuronal avec OpenCV 3 et Python 3
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Programmation facile Python + OpenCV avec Canopy
[OpenCV] Identification personnelle avec photo du visage
Détection des fonctionnalités OpenCV avec Google Colaboratory
Charger une image gif avec Python + OpenCV
Détection de chat avec OpenCV (distribution de modèles)
Trouver la similitude d'image avec Python + OpenCV
Utiliser OpenCV avec Python 3 dans Window
Dessinez une illustration avec Python + OpenCV
Suivre les balles de baseball avec Python + OpenCV
Segmentation basée sur un graphique avec Python + OpenCV
J'ai essayé la reconnaissance faciale avec OpenCV
Dessinez une flèche (vecteur) avec opencv / python
Etude de base d'OpenCV avec Python
Améliorez rapidement la précision de détection en spécifiant les paramètres avec la détection de visage openCV
Un mémo lorsque le visage est détecté avec Python + OpenCV rapidement
Hello World et détection de visage avec opencv-python 4.2
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Python2.7 + CentOS7 + OpenCV3
Grattage avec Python
Enregistrer la vidéo image par image avec Python OpenCV
Python avec Go
Détection de visage Dlib et compteur de clignotements par Python
Capturer des images avec Pupil, python et OpenCV
Twilio avec Python
Jouez avec 2016-Python
J'ai essayé le rendu non réaliste avec Python + opencv
Testé avec Python
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3