opencv - 0xC000001D : Illegal Instruction when running cvHaarDetectObjects opencv

标签 opencv

我得到 0xC000001D:运行 cvHaarDetectObject 时的非法指令。下面是我的代码

int main() {

IplImage* img;
img = cvLoadImage( "lena.jpg",1);

CvMemStorage* storage = cvCreateMemStorage(0);
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad( "haarcascade_frontalface_alt2.xml" );


static CvScalar colors[] = { {{0,0,255}}, {{0,128,255}}, {{0,255,255}}, 
{{0,255,0}}, {{255,128,0}}, {{255,255,0}}, {{255,0,0}}, {{255,0,255}} };

// Detect objects
cvClearMemStorage( storage );
CvSeq* objects = cvHaarDetectObjects( img, cascade, storage, 1.1, 2, 0, cvSize(40, 40) );

CvRect* r;
// Loop through objects and draw boxes
for( int i = 0; i < (objects ? objects->total : 0 ); i++ ){
    r = ( CvRect* )cvGetSeqElem( objects, i );
    cvRectangle( img, cvPoint( r->x, r->y ), cvPoint( r->x + r->width, r->y + r->height ),
        colors[i%8]);
}

cvNamedWindow( "Output" );
cvShowImage( "Output", img );
cvWaitKey();


cvReleaseImage( &img );

return 0;
}

是不是设置有问题?我可以编译代码,但是当我运行它时,当程序运行到 cvHaarDetectObjects 时,出现非法指令错误。

我已经包含了所有的 lib 文件并将图像放在我项目的同一目录中。

我用的是VS2010,Opencv2.4.3

谢谢和最好的问候

最佳答案

今天早上我正在处理这个确切的例子,并且刚刚修复了这个错误。

首先,我的存储出错了,所以我把它变大了(64MB 而不是默认值,我记得查找时是 64KB)。这修复了我的第一个分配错误,但 cvHaarDetectObjects() 错误仍在发生。请注意,您可能/可能不必这样做。

接下来,我将显示图像的部分复制粘贴到 cvHaarDetectObjects() 调用上方:

cvNamedWindow( "Output" );
cvShowImage( "Output", img );
cvWaitKey();

// Detect objects
cvClearMemStorage( storage );
CvSeq* objects = cvHaarDetectObjects( img, cascade, storage, 1.1, 2, 0, cvSize(40, 40) );

它显示我的图片没有加载!一旦我确定我在那里显示的图像,我将它移回原处并作为一个整体运行代码——它的效果非常好。

如果这没有帮助,我建议对进入 cvHaarDetectObjects() 的每个变量进行类似的跟踪,以查看哪个变量分配不正确。

关于opencv - 0xC000001D : Illegal Instruction when running cvHaarDetectObjects opencv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13639941/

相关文章:

android - 如何将 base64 编码的 opencv java 矩阵恢复为 C++ cv::Mat?

python - cv2.addWeighted 除了一些颜色

c++ - 如何使用 cv::boxPoints(RotatedRect box, OutputArray points)

c++ - 尝试为图像缓冲区分配内存时错误的 ptr 值

c++ - OpenCv C++ 透视变换

c++ - OpenCV 切槽检测

python - 查找填充的网格元素

java - Android OpenCV - 使用 HoughCircles 检测点的问题

windows - 在 cygwin 上运行一个 gui 应用程序

python - 这种NumPy列表理解的捷径