Avec les performances choquantes d'alphago l'année dernière, l'IA est redevenue la coqueluche des entreprises technologiques. L’IA implique de nombreux domaines, et la reconnaissance faciale dans la reconnaissance d’images est l’une des branches intéressantes. Le BFR de Baidu, la plate-forme ouverte Face++, Hanwang, iFlytek, etc. fournissent tous des API de reconnaissance faciale. Pour les codeurs expérimentés, vous pouvez écrire un petit morceau de code pour voir combien de personnes se trouvent sur une image. , juste pour le fun, et ne nécessite que 7 lignes de code.
import cv2 face_patterns = cv2.CascadeClassifier('/usr/local/opt/opencv3/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml') sample_image = cv2.imread('/Users/abel/201612.jpg') faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(100, 100)) for (x, y, w, h) in faces: cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2) cv2.imwrite('/Users/abel/201612_detected.png', sample_image);
Ligne 1 Présentation d'OpenCV
L'open source c'est génial, il nous permet d'élargir nos horizons et n'a pas besoin de réinventer la roue. Au lieu d'utiliser PIL et de le combiner avec un algorithme spécifique, OpenCV (http://opencv.org) est utilisé directement. OpenCV est une bibliothèque de vision par ordinateur multiplateforme basée sur la licence BSD. Elle peut fonctionner sur les systèmes d'exploitation Linux, Windows et Mac OS. Elle est écrite en C/C++. MATLAB et autres interfaces pour implémenter de nombreux algorithmes généraux en traitement d'image et vision par ordinateur.
La ligne 2 charge le classificateur cv2.CascadeClassifier
CascadeClassifier est un classificateur en cascade utilisé pour la détection de visage dans Opencv. Cette classe encapsule le mécanisme de détection de cible, c'est-à-dire le mécanisme de fenêtre coulissante + les classificateurs en cascade. . La structure des données comprend deux parties principales : Data et FeatureEvaluator. Data stocke les données du classificateur chargées à partir du fichier XML obtenu lors de la formation, tandis que FeatureEvaluator concerne le chargement, le stockage et le calcul des fonctionnalités. Le fichier de formation utilisé ici est haarcascade frontalface default.xml fourni par défaut dans OpenCV. Quant aux principes spécifiques de Haar et LBP, vous pouvez vous référer aux documents pertinents d'opencv. Simplement, cela peut être compris comme les données caractéristiques du visage.
Ligne 3 Charger l'image cible imlue
Les systèmes de reconnaissance faciale sont généralement divisés en : collecte d'images de visage, prétraitement d'images de visage, extraction de caractéristiques d'images de visage, et correspondance et reconnaissance. Pour plus de simplicité, lisez dans l'image,
Ligne 4 Détection multi-échelles detectorMultiScale
Appelez la fonction detectMultiScale dans CascadeClassifier pour la détection multi-échelles, la méthode à échelle unique. sera appelé. detectSingleScale. Description du paramètre :
scaleFactor est le facteur d'échelle de l'image
minNeighbours est le nombre de voisins qui doivent être conservés pour chaque rectangle en cascade, ce qui peut être compris comme le nombre de visages autour d'une personne
MinSize est la taille de la fenêtre de détection
Ces paramètres peuvent être ajustés pour l'image, et le résultat du traitement renvoie une liste d'objets rectangulaires de visages.
Les lignes 5 et 6 dessinent un cadre pour chaque visage
Parcourez la liste d'objets rectangulaires du visage, obtenez les coordonnées, la largeur et la hauteur du rectangle du visage, puis dessinez-le dans l'image originale Pour quitter le cadre rectangulaire, la méthode rectangle d'OpenCV est appelée, dans laquelle la couleur du cadre rectangulaire est réglable.
Ligne 7 Enregistrez les résultats du test
Le mystère ne réside pas dans ces 7 lignes de code, mais dans l'implémentation associée dans OpenCV. Le site Web chinois d'OpenCV est également un bon endroit pour apprendre et expérimenter.
Par conséquent, les 7 lignes de code ne sont qu'un gadget, le véritable noyau est OpenCV. Ensuite, il existe quelques écueils lors de l’installation de l’environnement OpenCV, alors notez-les particulièrement.
Environnement OpenCV basé sur Mac
Il est recommandé d'utiliser Brew pour l'installation Si Brew n'est pas installé, exécutez d'abord la commande suivante :
$/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
Ensuite, spécifiez Target Warehouse $brew tap homebrew/science
Installer OpenCV3 $brew install opencv3
La vitesse d'installation dépend du réseau. Après l'installation, vous devez lier le développement Python. environnement. Il existe de nombreuses méthodes :
1) Ajoutez des variables d'environnement et ajoutez les packages de site d'opencv au PYTHONPATH
2) Utilisez ln soft connection pour lier cv2.so au site-. packages de l'environnement python
3) Directement cp cv2.so dans le répertoire site-packages de l'environnement python
Plus simplement, exécutez la commande suivante :
echo /usr/local/opt/opencv3/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/opencv3.pth mkdir -p /Users/hecom/.local/lib/python2.7/site-packages echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/hecom/.local/lib/python2.7/site-packages/homebrew.pth
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!