我在Windows 7 64上使用OpenCV 2.4.8。我可以使用C接口cvCaptureFromAVI
加载和播放我的AVI文件,但使用C ++接口cv::VideoCapture
,cv::VideoCapture.open()
总是假的。
我试图将ffmpeg
(静态和共享)放在我的工作文件夹中,同样的问题。我需要重新编译OpenCV还是我做错了?
C接口代码:
IplImage *frame;
CvCapture *capture = cvCaptureFromAVI("sample.avi");
if ( capture == NULL )
{
std::cout << "video not ok" << std::endl;
}
else
{
std::cout << "video ok" << std::endl;
double videoFPS = cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );
while(frame = cvQueryFrame(capture))
{
cvShowImage("Video", frame);
cvWaitKey(1000/videoFPS);
}
cvDestroyWindow("Video");
cvReleaseImage(&frame);
cvReleaseCapture(&capture);
}
使用C ++接口的代码:
cv::Mat frame;
cv::VideoCapture capture;
cv::namedWindow("Video");
if(capture.open("sample.avi"))
{
std::cout << "video ok" << std::endl;
double videoFPS = capture.get(CV_CAP_PROP_FPS);
int nbFrames = capture.get(CV_CAP_PROP_FRAME_COUNT);
for(int i=0;i<nbFrames;i++)
{
capture >> frame;
imshow("Video", frame);
cv::waitKey(1000/videoFPS);
}
}
else
{
std::cout << "video not ok" << std::endl;
}
感谢您的帮助。