CascadeClassifier 클래스는 분류자 파일을 로드하고 이미지에서 필요한 개체를 감지하는 데 사용됩니다.
이 클래스의 discoverMultiScale() 메소드는 다양한 크기의 여러 객체를 감지할 수 있습니다. 이 메소드는 입력 이미지를 저장하기 위해 Mat 클래스 객체 −
를 허용합니다.
감지된 얼굴을 저장하는 데 사용되는 MatOfRect 클래스 개체입니다.
이미지의 얼굴 수를 얻으려면 −
CascadeClassifier 클래스를 사용하여 lbpcascade_frontalface.xml 파일을 로드합니다.
DetectMultiScale() 메서드를 호출하세요.
MatOfRect 객체를 배열로 변환합니다.
배열의 길이는 이미지에 있는 얼굴의 수입니다.
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"); } }
No of faces detected: 3
위 내용은 Java OpenCV 라이브러리를 사용하여 이미지에서 얼굴을 감지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!