-2

私はopencvが初めてで、カメラからキャプチャした画像を表示するための非常に単純なプログラムを作成しています。

コードは次のとおりです。

#include "cv.h"
#include "highgui.h"

int main(int argc, char** argv) {
    cvNamedWindow("win");

    CvCapture* capture = cvCreateCameraCapture(0);
    IplImage* frame = cvQueryFrame(capture);
    IplImage* out = cvCreateImage(cvGetSize(frame), frame->depth, 1);
    while(1) {
        frame = cvQueryFrame(capture);
        if(!frame) break;
        cvCanny(frame, out, 10, 100, 30);
        cvShowImage("win", out);  // !!!!! this line thrown exception

        char c = cvWaitKey(20);
        if(c==27) break;
    }

    cvReleaseImage(&out);
    cvReleaseCapture(&capture);
    cvDestroyWindow("win");
    return 0;
}

しかし、実行すると例外がスローされます。

Unhandled exception at at 0x000007FEFDD0CACD in Project2.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000024DA50.

どこが間違っていて、それを修正する方法は?


アップデート

最後に、私はその理由を見つけました:

cvCanny(frame, out, 10, 100, 30);

最後の引数が大きすぎます。これを に変更すると3、すべて正常に動作します。

4

1 に答える 1

1

これまでopencvを使用したことはありませんが、ここでは次のいずれかを推測します。

 CvCapture* capture = cvCreateCameraCapture(0);
 IplImage* frame = cvQueryFrame(capture);
 IplImage* out = cvCreateImage(cvGetSize(frame), frame->depth, 1);

NULL または invalidであり、それらを他の関数に渡しているため、さらにクラッシュが発生しています。

于 2012-08-06T07:38:52.790 に答える