Maison  >  Article  >  Java  >  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
WBOYavant
2023-08-20 09:09:08839parcourir

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");
   }
}

Input

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

Output

No of faces detected: 3

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer