Maison > Java > javaDidacticiel > Comment détecter des visages dans des images à l'aide de la bibliothèque Java OpenCV ?

Comment détecter des visages dans des images à l'aide de la bibliothèque Java OpenCV ?

WBOY
Libérer: 2023-08-20 09:09:08
avant
882 Les gens l'ont consulté

La classe CascadeClassifier est utilisée pour charger des fichiers de classificateur et détecter les objets requis dans les images.

La méthode detectMultiScale() de cette classe peut détecter plusieurs objets de différentes tailles. Cette méthode accepte un objet de classe Mat −

  • pour enregistrer l'image d'entrée.

  • Un objet de classe MatOfRect utilisé pour stocker les visages détectés.

Pour obtenir le nombre de visages dans l'image −

  • Utilisez la classe CascadeClassifier pour charger le fichier lbpcascade_frontalface.xml.

  • Appelez la méthode detectMultiScale().

  • Convertissez l'objet MatOfRect en tableau.

  • La longueur du tableau correspond au nombre de visages dans l'image.

Exemple

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
public class FaceDetection {
   public static void main (String[] args) {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the Image from the file
      String file ="D:\Images\faces.jpg";
      Mat src = Imgcodecs.imread(file);
      //Instantiating the CascadeClassifier
      String xmlFile = "lbpcascade_frontalface.xml";
      CascadeClassifier classifier = new CascadeClassifier(xmlFile);
      //Detecting the face in the snap
      MatOfRect faceDetections = new MatOfRect();
      classifier.detectMultiScale(src, faceDetections);
      System.out.println(String.format("Detected %s faces",
      faceDetections.toArray().length));
      //Drawing boxes
      for (Rect rect : faceDetections.toArray()) {
         Imgproc.rectangle(
            src,
            new Point(rect.x, rect.y),
            new Point(rect.x + rect.width, rect.y + rect.height),
            new Scalar(0, 0, 255),
            3
         );
      }
      //Writing the image
      Imgcodecs.imwrite("D:\Images\face_Detection.jpg", src);
      System.out.println("Image Processed");
   }
}
Copier après la connexion

Input

如何使用Java OpenCV库在图像中检测人脸?

Output

No of faces detected: 3
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal