请帮助我完成上述任务。我是openCV的新手。我在我的系统中安装了OpenCV 2.2,并使用VC ++ 2010 Express作为IDE。我的笔记本电脑中没有内置网络摄像头...... 只是我学会了如何加载图像。我非常渴望从我的磁盘加载一个视频文件(最好是mp4,flv格式),并希望使用openCV播放它。
答案 0 :(得分:1)
使用OpenCV的 C 界面(在Windows机箱上对我来说效果更好),加载视频文件的功能是cvCaptureFromAVI()
。之后,您需要使用传统循环通过cvQueryFrame()
然后cvShowImage()
检索框架,以便在使用cvNamedWindow()
创建的窗口中显示这些框架。
CvCapture *capture = cvCaptureFromAVI("video.avi");
if(!capture)
{
printf("!!! cvCaptureFromAVI failed (file not found?)\n");
return -1;
}
int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
printf("* FPS: %d\n", fps);
cvNamedWindow("display_video", CV_WINDOW_AUTOSIZE);
IplImage* frame = NULL;
char key = 0;
while (key != 'q')
{
frame = cvQueryFrame(capture);
if (!frame)
{
printf("!!! cvQueryFrame failed: no frame\n");
break;
}
cvShowImage("display_video", frame);
key = cvWaitKey(1000 / fps);
}
cvReleaseCapture(&capture);
cvDestroyWindow("display_video");
This blog post为您要完成的任务带来了一些额外的信息。
答案 1 :(得分:0)
(嗯......你好像不是自己想做点什么但是无论如何)
来自docs:
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
//Mat edges;
namedWindow("frames",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
//ignore below sample, since you only want to play
//cvtColor(frame, edges, CV_BGR2GRAY);
//GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
//Canny(edges, edges, 0, 30, 3);
//imshow("edges", edges);
imshow("frames", frame);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
这是使用opencv 1.x apis的old way。