我正在尝试在Visual Studio 2010的OpenCV\Samples\C文件夹中编译facedetect.cpp。项目将编译并开始正常运行,显示我的相机预览,然后似乎在层叠.detectMultiScale()上立即崩溃它检测到一张脸。我得出的结论是,OpenCV认为我太丑陋了。
Unhandled exception at 0x100342bf in HeadTrackerExample.exe: 0xC0000005: Access violation writing location 0x00000000.
不幸的是,调试信息无法让我更深入地研究。我链接到cv210.lib; cxcore210.lib; highgui210.lib;调试版本将不起作用:
LDR: LdrpWalkImportDescriptor() failed to probe D:\OpenCV2.1\bin\cv210d.dll for its manifest, ntstatus 0xc0150002
我将尝试打印安妮·海瑟薇(Anne Hathaway)来欺骗分类器,但我愿意接受其他建议。

https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/facedetect.cpp

最佳答案

我想我比你好看,因为它在这里工作(在OS X下)。您确定您已成功加载xml文件吗?您是否在使用默认的xml文件(haarcascade_frontalface_alt.xml和haarcascade_eye_tree_eyeglasses.xml)?

它肯定看起来像您有一个空指针。尝试在对cascade.detectMultiScale()的调用处设置一个断点,并检查cascadesmallImgsmallImg.datafaces的值。

编辑:填充faces向量

这是detectMultiScale代码:

void HaarClassifierCascade::detectMultiScale( const Mat& image,
                       Vector<Rect>& objects, double scaleFactor,
                       int minNeighbors, int flags,
                       Size minSize )
{
    MemStorage storage(cvCreateMemStorage(0));
    CvMat _image = image;
    CvSeq* _objects = cvHaarDetectObjects( &_image, cascade, storage, scaleFactor,
                                           minNeighbors, flags, minSize );
    Seq<Rect>(_objects).copyTo(objects);
}

直到完成所有检测后的最后一行,它才接触faces向量。如果您喜欢冒险,则可以在此处抛出一些printf语句,以查看cvHaarDetectObjects是否已完成以及是否返回空指针。

关于visual-studio-2010 - 当发现丑陋的面孔时,OpenCV 2.1 : facedetect. cpp崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7602246/

10-14 15:37
查看更多