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