Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Java face detection example produces 0 faces

Hello all,

I just started with the tutorials and I went directly into the example with Netbeans IDE.

I tried a couple of the xml face classifers, none worked. I used a few different pictures with faces, including the lena.png, none worked.

the outputted picture is correct(without the green box) so I don't know why it's not detecting.

Output:

run: Hello, OpenCV

Running DetectFaceDemo Detected 0 faces Writing faceDetection.png

package imagerecognition;

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.highgui.Highgui; import org.opencv.objdetect.CascadeClassifier;

// // Detects faces in an image, draws boxes around them, and writes the results // to "faceDetection.png". // class DetectFaceDemo { public void run() { System.out.println("\nRunning DetectFaceDemo");

// Create a face detector from the cascade file in the resources
// directory.
CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath());
Mat image = Highgui.imread("F:/lena.png");

// Detect faces in the image.
// MatOfRect is a special container class for Rect.
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);

System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

// Draw a bounding box around each face.
for (Rect rect : faceDetections.toArray()) {
    Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}

// Save the visualized detection.
String filename = "faceDetection.png";
System.out.println(String.format("Writing %s", filename));
Highgui.imwrite(filename, image);

} }

public class ImageRecognition { public static void main(String[] args) { System.out.println("Hello, OpenCV");

// Load the native library.
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
new DetectFaceDemo().run();

} }

I figured I might have skipped over something since I didn't try SBT or the ant build, but tried what I thought would work. Am I missing anything?

Thanks,

~KZ

click to hide/show revision 2
retagged

updated 2013-11-05 05:01:09 -0600

berak gravatar image

Java face detection example produces 0 faces

Hello all,

I just started with the tutorials and I went directly into the example with Netbeans IDE.

I tried a couple of the xml face classifers, none worked. I used a few different pictures with faces, including the lena.png, none worked.

the outputted picture is correct(without the green box) so I don't know why it's not detecting.

Output:

run: Hello, OpenCV

Running DetectFaceDemo Detected 0 faces Writing faceDetection.png

package imagerecognition;

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.highgui.Highgui; import org.opencv.objdetect.CascadeClassifier;

// // Detects faces in an image, draws boxes around them, and writes the results // to "faceDetection.png". // class DetectFaceDemo { public void run() { System.out.println("\nRunning DetectFaceDemo");

// Create a face detector from the cascade file in the resources
// directory.
CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath());
Mat image = Highgui.imread("F:/lena.png");

// Detect faces in the image.
// MatOfRect is a special container class for Rect.
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);

System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

// Draw a bounding box around each face.
for (Rect rect : faceDetections.toArray()) {
    Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}

// Save the visualized detection.
String filename = "faceDetection.png";
System.out.println(String.format("Writing %s", filename));
Highgui.imwrite(filename, image);

} }

public class ImageRecognition { public static void main(String[] args) { System.out.println("Hello, OpenCV");

// Load the native library.
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
new DetectFaceDemo().run();

} }

I figured I might have skipped over something since I didn't try SBT or the ant build, but tried what I thought would work. Am I missing anything?

Thanks,

~KZ