我试图在ubuntu中使用opencv c ++在avi文件中播放,但我没有输出。我使用的代码是我在网上找到的标准代码,用于播放avi视频,但我看不到输出。是的,视频与我的src代码文件夹位于同一目录中。我唯一看到的是,在while循环的第一次迭代中,frame是空的,因此会中断。但我不知道为什么它正在发生,因为视频正在vlc上工作。我非常感谢这里的一些帮助,因为我在过去的4-5个小时里一直坚持下去。 #include“cv.h”//将其包含在使用的Main OpenCV函数中。 #include“highgui.h”//包含它以使用GUI函数。
int main(int argc, char** argv)
{
cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);
//CvCapture* capture = cvCreateFileCapture("20051210-w50s.flv");
CvCapture* capture = cvCreateFileCapture("tree.avi");
/* if(!capture)
{
std::cout <<"Video Not Opened\n";
return -1;
}*/
IplImage* frame = NULL;
while(1) {
frame = cvQueryFrame(capture);
//std::cout << "Inside loop\n";
if (!frame)
break;
cvShowImage("Example3", frame);
char c = cvWaitKey(33);
if (c == 27) break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("Example3");
std::cout << "Hello!";
return 0;
}
答案 0 :(得分:0)
您是在调试模式还是在发布模式下运行? 在openCV 2.4.4中,只有一个opencv_ffmpeg244.dll(发行版.dll),但没有一个用于调试。尝试切换到发布模式。
答案 1 :(得分:0)
删除代码行:
char c = cvWaitKey(33);
if (c == 27) break;
而不是这些,只需添加:
cvWaitKey(33);
可能这可能会有所帮助。这是python代码,对我来说很好用:
import cv
if __name__ == '__main__':
capture = cv.CreateFileCapture('Wildlife.avi')
loop = True
while(loop):
frame = cv.QueryFrame(capture)
if (frame == None):
break;
cv.ShowImage('Wild Life', frame)
char = cv.WaitKey(33)
if (char != -1):
if (ord(char) == 27):
loop = False
或this可能会有所帮助。