我正在尝试在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()
的调用处设置一个断点,并检查cascade
,smallImg
,smallImg.data
和faces
的值。
编辑:填充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/