OpenCV cvHaarDetectObject 错误
Posted
技术标签:
【中文标题】OpenCV cvHaarDetectObject 错误【英文标题】:OpenCV cvHaarDetectObject error 【发布时间】:2012-01-13 20:47:22 【问题描述】:我正在使用 Qt4.8.0 和 OpenCV2.3.1 库在 Visual Studio 2010 中制作一个项目。只要我不使用一切都很好
cvHaarDetectObjects()
功能。该程序已编译和构建没有问题,但是当我尝试运行该应用程序时出现错误 0xc000007b。我在win控制台中做过类似的程序,这个功能可以正常工作。为什么我会收到此错误消息?我也尝试使用:
CascadeClassifier *haar;
haar->load("haarcascade_frontalface_alt.xml");
但即使在控制台中也不起作用。
示例代码
MainWindow.cpp:
MainWindow::MainWindow()
temp = cvCreateImage(cvSize(200, 200), 8, 1);
haarface = (CvHaarClassifierCascade*) cvLoad("haarcascade_frontalface_alt.xml");
storage = cvCreateMemStorage(0);
twarze = cvHaarDetectObjects(temp, haarface, storage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize(100,100));
MainWindow.h:
class MainWindow
private:
CvMemStorage *pamiec;
CvHaarClassifierCascade * haarface;
IplImage *temp2;
CvSeq *twarze;
public:
MainWindow(void);
;
可能是 .xml 文件有问题?
【问题讨论】:
【参考方案1】:您确定文件 haarcascade_frontalface_alt.xml 存在于当前目录中吗? 如果不存在,则 cvLoad 将返回 NULL。使用 xml 文件的完整路径。 另外,什么是错误 0xc000007b?你能发布完整的错误描述吗?
【讨论】:
是的,我确定它存在于这个目录中。 “应用程序运行不正常(0xc000007b)。单击“确定”,关闭应用程序。”当我评论线 twarze = cvHaarDetectObjects(temp, haarface, storage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize(100,100));一切正常。【参考方案2】:我只是将斜杠改为反斜杠就可以了;)cvLoad("\haarcascades\haarcascade_frontalface_alt.xml");
编辑:好的,它不会崩溃。实际上我正在使用 2.4.8 版本的 opencv。此代码的问题是 cvHaarDetectObjects 似乎不再受支持。建议改用detectMultiScale。
【讨论】:
以上是关于OpenCV cvHaarDetectObject 错误的主要内容,如果未能解决你的问题,请参考以下文章
cvHaarDetectObjects():“变量‘seq_thread’周围的堆栈已损坏。”