在java中打开CV检测面

时间:2013-06-16 14:05:02

标签: java opencv

我试图做这个样子: http://docs.opencv.org/2.4.4-beta/doc/tutorials/introduction/desktop_java/java_dev_intro.html 但每次我都有“检测到0张脸”。 我有Windows 7 x64,所有库(opencv_java245.dll)都已连接。我尝试了2.4.4和2.4.5版本,我尝试了不同的图像格式(png,jpg,bmp)和不同的图像,但结果总是相同的“检测到0面”。 为什么这可能不起作用?

2 个答案:

答案 0 :(得分:2)

通过将xml文件从我的项目传输到计算机上的另一个位置来解决此问题

答案 1 :(得分:2)

我遇到了同样的问题,我改变了代码

//CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("/lbpcascade_frontalface.xml").getPath());
//Mat image = Highgui.imread(getClass().getResource("/lena.png").getPath());

CascadeClassifier faceDetector = new CascadeClassifier("E:/lbpcascade_frontalface.xml"); // With absolute location.
Mat image = Highgui.imread("E:/lena.png"); // With absolute location.

然后它有效。

原始代码中的文件位置有问题。

String lbpcascadesFilePath = getClass().getResource("/lbpcascade_frontalface.xml").getPath();
// The fiel path you got is like /E:/Programmer/EclipseWorkspace/JavaProject/TestOpenCV/bin/lbpcascade_frontalface.xml
System.out.println(lbpcascadesFilePath); 
// trim first '/', or the file cannot be read in Windows.
lbpcascadesFilePath = lbpcascadesFilePath.substring(1);
// Then it is OK to load the file.
CascadeClassifier faceDetector = new CascadeClassifier(lbpcascadesFilePath);

然后对图像文件执行相同操作。

String imgFilePath = getClass().getResource("/lena.png").getPath();
System.out.println(imgFilePath); // like /E:/Programmer/EclipseWorkspace/JavaProject/TestOpenCV/bin/lena.png
imgFilePath = imgFilePath.substring(1);  // trim first "/", or the file cannot be read in Windows.
Mat image = Highgui.imread(imgFilePath);