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 出错的主要内容,如果未能解决你的问题,请参考以下文章

使用opencv构建项目时出错

OpenCV 出错

使用 QT 和 OpenCV 时出错

opencv打开视频文件出错

自制软件 + opencv + libpng 出错

尝试从轴相机获取图像时,OpenCV 出错