2

私は顔検出の問題に取り組んでいます。Androids FaceDetector を使用して顔を検出する作業コードがありますが、顔を検出するために OpenCV/JavaCV 関数を実装する方法を見つける必要があります。これはライブカメラを使用しておらず、ギャラリーの画像を使用しています。その画像パスを取得できますが、CvHaarClassifierCascade 分類子を取得できず、CvMemStorage ストレージを初期化できません。誰かが私を正しい方向に向けることができない場合または、Java でこれらの変数を正しく初期化するソース コードを提供します。ありがとう

4

2 に答える 2

1

次のようにできます: BufferedImage を提供するだけです。

または、cvLoadImage(..) を使用して、元の IplImage をイメージ パスで直接ロードします。

// provide an BufferedImage
BufferedImage image;

// Preload the opencv_objdetect module to work around a known bug.
Loader.load(opencv_objdetect.class);

// Path to the cascade file provided by opencv
String cascade = "../haarcascade_frontalface_alt2.xml"

CvHaarClassifierCascade cvCascade = new CvHaarClassifierCascade(cvLoad(cascade));

// create storage for face detection
CvMemStorage tempStorage = CvMemStorage.create();

// create IplImage from BufferedImage
IplImage original = IplImage.createFrom(image);

IplImage grayImage = null;

if (original.nChannels() >= 3) {
  // We need a grayscale image in order to do the recognition, so we
  // create a new image of the same size as the original one.
  grayImage = IplImage.create(image.getWidth(), image.getHeight(),
                IPL_DEPTH_8U, 1);
  // We convert the original image to grayscale.
  cvCvtColor(original, grayImage, CV_BGR2GRAY);
} else {
  grayImage = original.clone();
}

// We detect the faces with some default params
CvSeq faces = cvHaarDetectObjects(grayImage, cvCascade,
            tempStorage, 1.1, 3,
            0;

// Get face rectangles
CvRect[] fArray = new CvRect[faces.total()];
for (int i = 0; i < faces.total(); i++) {
            fArray[i] = new CvRect(cvGetSeqElem(faces, i));
        }
// print them out
for(CvRect f: fArray){
   System.out.println("x: " + f.x() + "y: " + f.y() + "width: " + f.width() +  "height: " + f.height());
}

tempStorage.release();
于 2012-04-10T08:24:02.297 に答える
1

クラス定義は基本的に、C の元のヘッダー ファイルの Java への移植に加えて、OpenCV の C++ API によってのみ公開される欠落している機能です。このリンクを参照できます。これにはhttp://code.google.com/p/javacv/が含まれます

およびhttp://geekoverdose.wordpress.com/tag/opencv-javacv-android-haarcascade-face-detection/

于 2013-02-13T11:05:45.397 に答える