자바+opencv 3.2.0 얼굴 검사 기능 실현

얼굴 검사 하면 우선 Haar 특징 분류 기 를 알 아야 한다.Haar 특징 분류 기 는 말하자면 하나의 xml 파일 로 서로 다른 xml 에서 인체 각 부위 의 특징 치,예 를 들 어 얼굴,눈 등 을 묘사 합 니 다.OpenCV 3.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
서로 다른 특징 파일 을 불 러 오 면 검 측 효 과 를 얻 을 수 있 습 니 다.
OpenCV 3.2.0 에서 detectMultiScale 함수 매개 변수 설명:
detectMultiScale(Mat image, MatOfRect objects, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize)
image:검 측 대상 그림,보통 그 레이스 케 일(효율 향상)
objects:검 측 된 물체 의 사각형 상자 벡터 그룹
scaleFactor:앞 뒤 두 번 연속 스 캔 에서 검색 창의 비례 계수 입 니 다.기본 값 은 1.1 입 니 다.즉,매번 검색 창 을 10%씩 확대 합 니 다.
minNeighbors:검 측 목 표를 구성 하 는 인접 사각형 의 최소 개수(기본 값 은 3 개)
flags:기본 값 을 사용 하거나 CV 를 사용 합 니 다.HAAR_DO_CANNY_PRUNING,CV 로 설정 하면HAAR_DO_CANNY_PRUNING,그러면 함 수 는 Canny 테두리 검 측 을 사용 하여 가장자리 가 너무 많 거나 적은 구역 을 제거 하기 때문에 이 구역 들 은 보통 사람의 얼굴 이 있 는 구역 이 아 닙 니 다.
minSize:얻 은 대상 구역 의 최소 범위
max Size:획득 한 대상 구역 의 최대 범위
얼굴 검사 예시 코드:

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 FaceDetect
{

  public static void main(String[] args)
  {
    // TODO Auto-generated method stub
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    System.out.println("
Running FaceDetector"); CascadeClassifier faceDetector = new CascadeClassifier(); faceDetector.load( "C:\\Program Files\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml"); Mat image = Imgcodecs.imread("F:\\1114.jpg"); MatOfRect faceDetections = new MatOfRect(); faceDetector.detectMultiScale(image, faceDetections); System.out.println(String.format("Detected %s faces", faceDetections.toArray().length)); for (Rect rect : faceDetections.toArray()) { Imgproc.rectangle(image, new Point(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); } }
원본 그림 과 결과 그림:

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기