얼굴 감지와 관련하여 먼저 HAAR 기능 분류기를 이해해야합니다. 무뚝뚝하게 말하면, HAAR 기능 분류기는 얼굴, 눈 등과 같은 인체의 다양한 부분의 특성 값을 설명하는 일련의 XML 파일입니다. 다음 기능 파일은 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
다른 기능 파일을로드함으로써 해당 감지 효과가 달성 될 수 있습니다.
OpenCV3.2.0의 DetectMultiscale 함수 매개 변수에 대한 설명 :
DetectMultiscale (MAT 이미지, MATOFRECT 객체, Double ScaleFactor, int Minneighbors, Int 플래그, 크기 Minsize, 크기 최대 크기)
이미지 : 감지 할 이미지는 일반적으로 회색차입니다 (효율성 향상)
개체 : 감지 된 물체의 직사각형 박스 벡터 그룹
ScaleFactor : 두 번의 연속 스캔으로 검색 창의 스케일 계수. 기본값은 1.1입니다. 즉, 각 검색 창은 순서대로 10% 확장됩니다.
Minneighbors : 감지 목표를 구성하는 최소 인접한 사각형 수 (기본값은 3)
플래그 : 기본값을 사용하거나 cv_haar_do_canny_pruning을 사용하십시오. CV_HAAR_DO_CANNY_PRUNING으로 설정하면이 기능은 Canny Edge 감지를 사용하여 가장자리가 너무 많거나 적은 지역을 제외하여 보통 얼굴이있는 영역이 아닙니다.
Minsize : 얻은 대상 영역의 최소 범위
최대 규모 : 얻은 목표 영역의 최대 범위
얼굴 감지 샘플 코드 :
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; org.opencv.imgproc.imgproc; import org.opencv.objdetect.cascadeclassifier; public class facedetect {public static void main (string [] args) {// a auto-generated method stub system.loadlibrary (core.native_library_name); System.out.println ( "/nrunning facedetector"); cascadeclassifier facedetector = 새로운 cascadeclassifier (); facedetector.load ( "c : // program files // opencv // sources // haarcascades // haarcascades // haarcascades_frontalface_alt.xml"); mat image = imgcodecs.imread ( "f : //1114.jpg"); matofrect facedetections = new matofrect (); facedetector.detectmultiscale (이미지, facedetections); System.out.println (String.format ( "감지 %s면", facedetections.toarray (). length)); for (rect rect : facedetections.toarray ()) {imgproc.rectangle (이미지, 새 포인트 (rect.x, rect.y), new Point (rect.x + rect.width, rect.y + rect.height), new Scalar (0, 255, 0)); } string filename = "f : //ouput.jpg"; imgcodecs.imwrite (filename, image); }} 소스 이미지 및 결과 다이어그램 :
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.