Pcessing에서 openCV를 사용하여 얼굴 이외를 감지

processing에 openCV를 넣어 얼굴을 검출하는 설명이 인터넷에도 책에도 여러가지 쓰여져 있지만, 입이나 눈만을 검출하는 방법이 적기 때문에 조사해 보았다.

예로서 얼굴 검출에 example로서 들어있는 것은
import gab.opencv.*;
import java.awt.Rectangle;

OpenCV opencv;
Rectangle[] faces;

void setup() {
  opencv = new OpenCV(this, "test.jpg");
  size(1080, 720);

  opencv.loadCascade(OpenCV.CASCADE_FRONTALFACE);  
  faces = opencv.detect();
}

void draw() {
  image(opencv.getInput(), 0, 0);

  noFill();
  stroke(0, 255, 0);
  strokeWeight(3);
  for (int i = 0; i < faces.length; i++) {
    rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height);
  }
}


이 중
opencv.loadCascade (OpenCV.CASCADE_FRONTALFACE);

그런데, 검출 할 대상을 결정했습니다.

opencv가 작성된 파일은
Documents/Processing/libraries/opencv_processing/src/gab/opencv/OpenCV.java

이 안에
    public final static String VERSION = "0.5.4";
    public final static String CASCADE_FRONTALFACE = "haarcascade_frontalface_alt.xml";
    public final static String CASCADE_PEDESTRIANS = "hogcascade_pedestrians.xml";
    public final static String CASCADE_EYE = "haarcascade_eye.xml";
    public final static String CASCADE_CLOCK = "haarcascade_clock.xml";
    public final static String CASCADE_NOSE = "haarcascade_mcs_nose.xml";
    public final static String CASCADE_MOUTH = "haarcascade_mcs_mouth.xml";
    public final static String CASCADE_UPPERBODY = "haarcascade_upperbody.xml";
    public final static String CASCADE_LOWERBODY = "haarcascade_lowerbody.xml";
    public final static String CASCADE_FULLBODY = "haarcascade_fullbody.xml";
    public final static String CASCADE_PEDESTRIAN = "hogcascade_pedestrians.xml";

    public final static String CASCADE_RIGHT_EAR = "haarcascade_mcs_rightear.xml";
    public final static String CASCADE_PROFILEFACE = "haarcascade_profileface.xml";


따라서 CASCADE_FRONTALFACE 부분을 CASCADE_○○로 다시 작성하면 사용할 수 있습니다.

Bad Request

좋은 웹페이지 즐겨찾기