cvResize视频帧

时间:2011-10-28 16:05:21

标签: c++ c opencv scale

当试图加载图像并复制其中的一部分或平滑时,一切正常,但是当我拍摄视频并尝试复制框架的一部分时,它会反转并旋转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 个答案:

答案 0 :(得分:2)

您需要匹配目标图片的深度频道数才能使调整大小操作正常工作。现在,你正在假设这些价值观。

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。

修改

在下面的评论中,您声明您使用的是 OpenCV b5a 。我刚刚发现提到这个版本的a message from 2006,这意味着你正在使用OpenCV的侏罗纪版本,这可能是问题的根源。

有一个显示how to use OpenCV with C++ Builder的页面,但如果您遇到问题,我建议您转到另一个编译器。

您所观察到的很可能是OpenCV这个古老版本的错误。