2

我试着做这个例子: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 个面孔”。为什么这可能行不通?

4

2 回答 2

2

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

于 2013-07-03T16:45:21.160 回答
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);
于 2013-08-23T02:36:49.093 回答