En ce qui concerne la détection de visage, nous devons d'abord comprendre le classificateur de fonctionnalités Haar. Pour le dire franchement, le classificateur de fonctionnalités Haar est une série de fichiers XML, qui décrivent les valeurs caractéristiques de diverses parties du corps humain, telles que les visages, les yeux, etc. Les fichiers de fonctions suivants sont fournis dans OpenCV3.2.0:
haarcascade_eye.xml
haarcascade_eye_tree_eyeglasses.xml
haarcascade_frontalcatface.xml
haarcascade_frontalcatface_extended.xml
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_default.xml
haarcascade_fullbody.xml
haarcascade_lefteye_2splits.xml
haarcascade_licence_plate_rus_16stages.xml
haarcascade_lowerbody.xml
haarcascade_profileface.xml
haarCascade_righteye_2splits.xml
haarcascade_russian_plate_number.xml
haarcascade_smile.xml
haarcascade_upperbody.xml
En chargeant différents fichiers de fonctionnalités, l'effet de détection correspondant peut être réalisé.
Description du paramètre de fonction détectMulcale dans OpenCV3.2.0:
DetectMultiStale (Image MAT, objets Matofrect, Double Scalefacteur, int Minneighbors, INT Flags, taille MINSIZE, taille maxsize)
Image: L'image à détecter est généralement un niveau de gris (amélioration de l'efficacité)
Objets: un groupe de vecteur de boîte rectangulaire d'objets détectés
SCALEFACTOR: Le coefficient d'échelle de la fenêtre de recherche dans deux analyses consécutives. La valeur par défaut est 1.1, c'est-à-dire que chaque fenêtre de recherche se développe de 10% en séquence.
Minneighbors: le nombre minimum de rectangles adjacents qui constituent la cible de détection (la valeur par défaut est 3)
Indicateurs: utilisez la valeur par défaut ou utilisez CV_HAAR_DO_CANNY_PRUNING. Si réglé sur CV_HAAR_DO_CANNY_PRUNING, la fonction utilisera une détection de bord Canny pour exclure les zones avec trop ou trop de bords, de sorte que ces zones ne seront généralement pas la zone où le visage est situé
Minsize: la plage minimale de la zone cible obtenue
MaxSize: la plage maximale de la zone cible obtenue
Exemple de code de détection de visage:
import org.opencv.core.core; import org.opecv.core.mat; import org.opeccv.core.matofrect; import org.opecv.core.point; import org.opecv.core.rect; import org.opencv.core.ccalar; import org.openv.imgcodecs.imgcodecs; org.opencv.imgproc.imgproc; import org.opecvv.objdetect.cascadeclassifier; classe publique facetect {public static void main (string [] args) {// todo meto-généré par Stub System.loadLibrary (core.native_library_name); System.out.println ("/ nrunning facedetector"); Cascadeclassifier facedetector = new CascadeClassifier (); facedetector.load ("C: // Files de programme // opencv // sources // data // haarcascades // haarcascades // haarcascades_frontalface_alt.xml"); Mat Image = imgCodecs.imRead ("f: //1114.jpg"); Matofrect facetections = new Matofrect (); faceDetector.tectMultiscale (image, facettements); System.out.println (String.Format ("détecté% s faces", facetection.toArray (). Length)); pour (rect rect: facedetections.toArray ()) {imgproc.rectangle (image, nouveau point (rect.x, rect.y), nouveau point (rect.x + rect.width, rect.y + rect.height), nouveau scalar (0, 255, 0)); } String filename = "f: //ouput.jpg"; ImgCodecs.imwrite (nom de fichier, image); }} Image source et diagramme de résultats:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.