4

私はたくさんの画像を持っているので、人間の顔が含まれているすべての画像を除外する必要があります。画像を入力として受け取り、yesまたはnoを出力する単一のメソッドを提供するようなJavaライブラリはありますか?

4

1 に答える 1

7

JavaCVで顔検出を行うことができます。JavaCVは、OpenCVのJavaラッパーです。真/偽ではなく、写真の顔の位置を示します。あなたは次のようなことをすることができます:

public class FaceDetect {

   // Create memory for calculations
   CvMemStorage storage = null;

   // Create a new Haar classifier
   CvHaarClassifierCascade classifier = null;

   // List of classifiers
   String[] classifierName = {
                "./classifiers/haarcascade_frontalface_alt.xml",
                "./classifiers/haarcascade_frontalface_alt2.xml",
                "./classifiers/haarcascade_profileface.xml" };

   public FaceDetect() {
        // Allocate the memory storage
        storage = CvMemStorage.create();

        // Load the HaarClassifierCascade
        classifier = new CvHaarClassifierCascade(cvLoad(classifierName[0]));

        // Make sure the cascade is loaded
        if (classifier.isNull()) {
                System.err.println("Error loading classifier file");
        }
   }

   public boolean find (Image value ){
        // Clear the memory storage which was used before
        cvClearMemStorage(storage);

        if(!classifier.isNull()){
                // Detect the objects and store them in the sequence
                CvSeq faces = cvHaarDetectObjects(value.getImage(), classifier,
                                storage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING);

                // Get the number of faces found.
                int total = faces.total();
                if (total > 0) {
                    return true;
                }
        }
        return false;
   }
}
于 2012-09-11T22:06:58.840 に答える