cvResize на видеокадре - PullRequest
       1

cvResize на видеокадре

1 голос
/ 28 октября 2011

При попытке загрузить изображение и скопировать его часть или сгладить, все в порядке, но когда я снимаю видео и пытаюсь скопировать часть кадра, он переворачивается и поворачивается на 180 градусов, кто-нибудь знает почему?

IplImage *scaled=cvCreateImage(sz,IPL_DEPTH_8U,3); 
capture = cvCaptureFromFile( "C:\\New York.avi" ); 
IplImage *frame = cvQueryFrame( capture ); 
cvResize(frame,scaled,CV_INTER_LINEAR); 
cvShowImage("123",scaled);
cvReleaseImage(&scaled);

1 Ответ

2 голосов
/ 28 октября 2011

Вам необходимо соответствовать глубина и количество каналов целевого изображения, чтобы операция изменить размер работала. Прямо сейчас вы принимаете эти значения.

capture = cvCaptureFromFile("C:\\New York.avi"); 
IplImage* frame = cvQueryFrame(capture); 
IplImage* scaled = cvCreateImage(sz, frame->depth, frame->nChannels); 

cvResize(frame, scaled, CV_INTER_LINEAR); 
cvShowImage("123", scaled);

cvWaitKey(0); // wait for a key press, and then

cvReleaseImage(&scaled);

Я надеюсь, что вы используете последнюю версию OpenCV.

EDIT

В комментарии ниже вы заявили, что используете OpenCV b5a . Я только что нашел сообщение от 2006 , в котором упоминается эта версия, что означает, что вы используете юрский выпуск OpenCV, и это, вероятно, корень проблемы.

Есть страница, которая показывает , как использовать OpenCV с C ++ Builder , но если у вас возникли проблемы с этим, я предлагаю вам перейти к другому компилятору.

То, что вы наблюдаете, скорее всего, ошибка этого древнего выпуска OpenCV.

...