-1

あるフレームの変数を別のフレームにどのように変更できますか。これは、メモリ管理の問題ではない種類のコピーです。

例えば ​​:

iplimage *frame = NULL;
iplimage *Temp_frame = NULL;

while(1) {
frame = cvQueryFrame( capture );

if( !frame ) break;

    Temp_frame=cvcloneimage(frame);

    cvreleaseImage(&Temp_frame);

    cvreleaseImage(&frame);
}

エラー:

開いている cv.exe の 0x75b39673 で未処理の例外: Microsoft C++ 例外: cv::Exception at memory location 0x0015f250..

助けてください。

4

1 に答える 1

1
iplimage *frame = NULL;
iplimage *Temp_frame = NULL;

while(1) 
{
    frame = cvQueryFrame(capture);    
    if (!frame) 
        break;

    if (!Temp_frame) // creates Temp_frame only once
        Temp_frame = cvCreateImage(cvGetSize(frame), frame->depth, frame->nChannels);    

    cvCopy(frame , Temp_frame, NULL);

    // DO NOT RELEASE the return of cvQueryFrame()!
    // I believe that's what crashing your application.
    //cvreleaseImage(&frame);
}

// Since the size of "frame" won't change, there's no need to to create/release 
// Temp_frame on every iteration of the loop. So we release it at the end:
cvReleaseImage(&Temp_frame);
于 2012-07-12T13:08:49.983 に答える