OpenCV 出错
Posted
技术标签:
【中文标题】OpenCV 出错【英文标题】:Error with OpenCV 【发布时间】:2011-12-09 21:46:34 【问题描述】:我正在尝试使用已安装的 OpenCV 库运行简单代码 并出现错误:应用程序无法正确启动(0xc0150002)。
视觉工作室 2010 OpenCV 2.1.0
我到处搜索,但找不到解决这个问题的方法...... 这是我的代码。我能做什么?
#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#ifdef _EiC
#define WIN32
#endif
static CvMemStorage* storage_face = 0; //Memory Storage to Sore faces
static CvHaarClassifierCascade* cascade_face = 0;
void detect_and_draw( IplImage* image );
//Haar cascade - if your openc CV is installed at location C:/OpenCV2.0/
const char* cascade_name_face ="C:/OpenCV2.0/data/haarcascades/haarcascade_frontalface_alt.xml";
/////////////////////////////////////////////////////////////////////////////////
int main()
IplImage *image =0;
image = cvLoadImage("picci.jpg",1);
if(!image)
printf("Error loading image\n");
return -1;
cascade_face = (CvHaarClassifierCascade*)cvLoad( cascade_name_face, 0, 0, 0 );
if( !cascade_face )
printf("ERROR: Could not load classifier of face cascade\n" );
return -1;
storage_face = cvCreateMemStorage(0);
cvNamedWindow( "result", 1 );
// Call function to detect and Draw rectagle around face
detect_and_draw( image);
// Wait for key event.
cvWaitKey(0);
// release resourses
cvReleaseImage( &image );
cvReleaseHaarClassifierCascade(&cascade_face );
cvReleaseMemStorage( &storage_face);
cvDestroyWindow("result");
return 0;
//////////////////////////// Function To detect face //////////////////////////
void detect_and_draw( IplImage* img )
double scale = 2;
// create a gray image for the input image
IplImage* gray = cvCreateImage( cvSize(img->width,img->height), 8, 1 );
// Scale down the ie. make it small. This will increase the detection speed
IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),cvRound (img->height/scale)),8, 1 );
int i;
cvCvtColor( img, gray, CV_BGR2GRAY );
cvResize( gray, small_img, CV_INTER_LINEAR );
// Equalise contrast by eqalizing histogram of image
cvEqualizeHist( small_img, small_img );
cvClearMemStorage( storage_face);
if( cascade_face )
// Detect object defined in Haar cascade. IN our case it is face
CvSeq* faces = cvHaarDetectObjects( small_img, cascade_face, storage_face,
1.1, 2, 0/*CV_HAAR_DO_CANNY_PRUNING*/,
cvSize(30, 30) );
// Draw a rectagle around all detected face
for( i = 0; i < (faces ? faces->total : 0); i++ )
CvRect r = *(CvRect*)cvGetSeqElem( faces, i );
cvRectangle( img, cvPoint(r.x*scale,r.y*scale),cvPoint((r.x+r.width)*scale,(r.y+r.height)*scale),CV_RGB(255,0,0),3,8,0 );
cvShowImage( "result", img );
cvReleaseImage( &gray );
cvReleaseImage( &small_img );
【问题讨论】:
看看这个线程,也许? ***.com/questions/2690374/… 谢谢,但这并不是真的有用我使用了与他们建议的相同的文章来安装 OpenCV lib 并且仍然有问题( 您需要找到正确的版本(或重建)您使用的 OpenCV 库。你得到的那些是为不同版本的 Visual Studio 构建的,需要清单。它在抱怨什么,你可以在 Windows 事件日志中看到一个关于它的事件。 【参考方案1】:两个潜在问题:
-
您的应用找不到 OpenCV DLL,您可能需要将 OpenCV DLL 复制到相应的 bin/release 或 bin/debug 目录中。
或者 OpenCV 二进制文件是使用与您系统上安装的不同版本的 CRT 构建的。您是否在系统上构建了 OpenCV 二进制文件?这可能会有所帮助。
【讨论】:
以上是关于OpenCV 出错的主要内容,如果未能解决你的问题,请参考以下文章