Я пытаюсь написать программу, которая печатает норму между двумя кадрами (30 кадров), захваченными с веб-камеры, но cvNorm всегда возвращает 0. Что я делаю неправильно ? Код следующим образом: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;
}
Спасибо! В этом была проблема – jzepeda
ссылка не работает. Это скорее загружает некоторую случайную страницу для очистки ОС. –