FaceDetect OpenCV2.1示例,访问冲突写入位置0x00000000

FaceDetect OpenCV2.1示例,访问冲突写入位置0x00000000,opencv,access-violation,face-detection,Opencv,Access Violation,Face Detection,我尝试使用vs2010运行facedetect opencv示例。 调试结果“facedetect.exe中0x53fa42bf处未处理的异常:0xC0000005:访问冲突写入位置0x00000000。” 这是密码 txt文件: cpp文件: #包括“stdafx.h” #包括 #包括 #定义CV\u不向后\u兼容性 #包括“cv.h” #包括“highgui.h” #ifdef_EiC #定义WIN32 #恩迪夫 使用名称空间std; 使用名称空间cv; 空隙检测和图纸(材料和材料), 级联

我尝试使用vs2010运行facedetect opencv示例。 调试结果“facedetect.exe中0x53fa42bf处未处理的异常:0xC0000005:访问冲突写入位置0x00000000。”

这是密码 txt文件:
cpp文件:

#包括“stdafx.h”
#包括
#包括
#定义CV\u不向后\u兼容性
#包括“cv.h”
#包括“highgui.h”
#ifdef_EiC
#定义WIN32
#恩迪夫
使用名称空间std;
使用名称空间cv;
空隙检测和图纸(材料和材料),
级联分类器和级联,级联分类器和嵌套级联,
双刻度);
字符串cascadeName=“./data/haarcascades/haarcascade_frontalface_alt.xml”;
字符串nestedCascadeName=“./data/haarcascades/haarcascade\u eye\u tree\u eyegories.xml”;
int main(int argc,常量字符**argv)
{
CvCapture*capture=0;
垫框、框架复制、图像;
常量字符串scaleOpt=“--scale=”;
size_t scaleOptLen=scaleOpt.length();
常量字符串cascadeOpt=“--cascade=”;
size_t cascadeOptLen=cascadeOpt.length();
常量字符串nestedCascadeOpt=“--nestedcascade”;
size_t nestedCascadeOptLen=nestedCascadeOpt.length();
字符串输入名;
级联分类器级联,嵌套级联;
双刻度=1;
对于(int i=1;ix+nr->宽度*0.5)*比例);
中心y=cvRound((r->y+nr->y+nr->高度*0.5)*刻度);
半径=cvRound((nr->宽度+nr->高度)*0.25*刻度);
圆(img、中心、半径、颜色、3、8、0);
} 
}
cv::imshow(“结果”,img);
}

需要一些解决方法的帮助…

访问冲突错误可能意味着您正在访问一个未设置值的指针


如果您不了解如何使用调试器(学习!),请输入printf(“ok1,2,3….\n”);自由地浏览代码并计算出它的设计距离,这样您就可以缩小错误发生的范围

我在VS2010上的OpenCV 2.3中也遇到了这个错误,即使在调整代码后,
cascadeName
使用了
haarcascade_frontalface_alt.xml
的完整路径

我能够指出导致应用程序崩溃的那一行的问题:

if( !cascade.load( cascadeName ) )

崩溃来自OpenCV的代码,我不知道为什么会发生。

使用VS2010的优秀调试工具跟踪它,问题发生在哪里,哪个函数,哪个类,哪个使用风格等等。。这种提问方式没有答案。我在OSX10.6.8和OpenCV2R6123下进行了测试,对我来说效果很好。它似乎在视频最丑陋的部分(即我的脸)周围画了一个圆圈。是的,我知道它在其他平台上也能工作。问题似乎出在Windows版本上。谢谢。@karlphillip你找到这个问题的解决方案了吗?
if( !cascade.load( cascadeName ) )