OpenCV 3.0.0 FaceDetect示例失败

max*_*t89 13 java opencv

我试图让OpenCV运行我正在使用以下 示例代码

我显示以下错误行:

OpenCV Error: Assertion failed (!empty()) in cv::CascadeClassifier::detectMultiScale, file ..\..\..\..\opencv\modules\objdetect\src\cascadedetect.cpp, line 1580
Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: ..\..\..\..\opencv\modules\objdetect\src\cascadedetect.cpp:1580: error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale
]
    at org.opencv.objdetect.CascadeClassifier.detectMultiScale_1(Native Method)
    at org.opencv.objdetect.CascadeClassifier.detectMultiScale(CascadeClassifier.java:176)
    at org.maxbit.opencv.samples.DetectFaceDemo.run(SampleB.java:29)
    at org.maxbit.opencv.samples.SampleB.main(SampleB.java:51)
Run Code Online (Sandbox Code Playgroud)

任何机构都可以告诉我该错误意味着什么或如何调试它?

Aun*_*ein 19

我也遇到了这个问题.问题出在.getPath()返回格式的绝对路径.

例如:"/ C:/Users/projects/FaceDetection/bin/com/face/detection/haarcascade_frontalface_alt.xml".

所以改变这样的代码.

CascadeClassifier faceDecetor = new CascadeClassifier(FaceDetection.class.getResource("haarcascade_frontalface_alt.xml").getPath().substring(1));
Run Code Online (Sandbox Code Playgroud)


Kir*_*ran 7

这通常有两个原因.

  1. 级联分类器文件lbpcascade_frontalface.xml不存在于指定路径中.
  2. 级联分类器文件已损坏.

要在运行时获取错误消息而不是异常,请尝试下面的代码示例.如果CascadeClassifier 构造函数无法加载级联分类器XML,则它是静默的.开发人员有责任调用该empty()方法并检查分类器是否正确加载

CascadeClassifier cascade = new CascadeClassifier( CASCADE_CLASSIFIER_PATH );
if ( cascade.empty() ) {
    //handler error here
}
Run Code Online (Sandbox Code Playgroud)

你得到的例外是来自OpenCV的本地代码断言这里.


小智 5

我遇到了在Windows机器上运行的同样错误.此示例在Linux上运行,但不在Windows上运行.

问题出在xml文件和图像的.getPath()调用之后getResource().

问题是,URL.getPath()URL.getFile()两者都返回格式为"/ c:/ ..."的绝对路径.

OpenCV例程阻塞它必须是"c:/ ..."(没有前导'/').这似乎是版本3.0.0早期的一个错误?

我希望这会有所帮助,OpenCV for Java似乎是一个很棒的工具......但是当示例不起作用时,它有点令人沮丧.