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’周围的堆栈已损坏。”

opencv 配置

OpenCV实战——OpenCV与图像处理

cmake错误:opencv2/opencv.hpp:opencv2/opencv.hpp:没有这样的文件或目录

opencv相机标定

opencv4opencv视频教程 C++(opencv教程)1opencv介绍和环境搭建