Rumah >Java >javaTutorial >Bagaimana untuk mengesan wajah dalam imej menggunakan perpustakaan OpenCV Java?

Bagaimana untuk mengesan wajah dalam imej menggunakan perpustakaan OpenCV Java?

WBOY
WBOYke hadapan
2023-08-20 09:09:08885semak imbas

Kelas CascadeClassifier digunakan untuk memuatkan fail pengelas dan mengesan objek yang diperlukan dalam imej.

Kaedah detectMultiScale() kelas ini boleh mengesan berbilang objek dengan saiz yang berbeza. Kaedah ini menerima objek kelas Mat −

  • untuk menyimpan imej input.

  • Objek kelas MatOfRect yang digunakan untuk menyimpan muka yang dikesan.

Untuk mendapatkan bilangan muka dalam imej −

  • Gunakan kelas CascadeClassifier untuk memuatkan fail lbpcascade_frontalface.xml.

  • Panggil kaedah detectMultiScale() .

  • Tukar objek MatOfRect kepada tatasusunan.

  • Panjang tatasusunan ialah bilangan muka dalam imej.

Contoh

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

Atas ialah kandungan terperinci Bagaimana untuk mengesan wajah dalam imej menggunakan perpustakaan OpenCV Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam