Я пытаюсь написать программу, которая распечатывает норму между двумя кадрами (с интервалом 30 кадров), снятыми с веб-камеры, но cvNorm всегда возвращает 0. Что я делаю неправильно? Код следует:
int main( int argc, char **argv )
{
CvCapture *capture = 0;
IplImage *frame = 0;
int key = 0;
/* initialize camera */
capture = cvCaptureFromCAM( 0 );
/* always check */
if ( !capture ) {
fprintf( stderr, "Cannot open initialize webcam!\n" );
return 1;
}
/* create a window for the video */
cvNamedWindow( "result", CV_WINDOW_AUTOSIZE );
IplImage *image;
IplImage pastImage;
for(int i = 0; key != 'q'; i++ ) {
image = cvQueryFrame(capture);
Вот где происходит проверка:
if(!(i %30)){
if(i){
cout<<cvNorm(&pastImage,image)<<endl;
}
memcpy(&pastImage,image, sizeof(IplImage));
}
frame = image;
/* always check */
if( !frame ) break;
/* display current frame */
cvShowImage( "result", frame );
/* exit if user press 'q' */
key = cvWaitKey( 1 );
}
/* free memory */
cvDestroyWindow( "result" );
cvReleaseCapture( &capture );
return 0;
}