我试图让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)
这通常有两个原因.
lbpcascade_frontalface.xml不存在于指定路径中.要在运行时获取错误消息而不是异常,请尝试下面的代码示例.如果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似乎是一个很棒的工具......但是当示例不起作用时,它有点令人沮丧.
| 归档时间: |
|
| 查看次数: |
10848 次 |
| 最近记录: |