播放硬盘中的视频文件
#include <cv.h>
#include <highgui.h>
#include<iostream>
using namespace std;int main()
{cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE); //创建窗口CvCapture* capture = cvCreateFileCapture("Example2.avi"); IplImage* frame;while (1){frame = cvQueryFrame(capture); //将下一帧视频文件载入内存(实际是填充和更新CvCapture结构中)//返回一个对应当前帧的指针if (!frame) break;cvShowImage("Example2", frame);char c = cvWaitKey(33);if (c == 27) break; //当用户按esc后,视频将被结束}cvReleaseCapture(&capture); //释放CvCapture结构开辟的内容cvDestroyWindow("Example2"); //销毁窗口
}
添加滚动条以控制视频播放
#include <cv.h>
#include <highgui.h>
#include<iostream>
using namespace std;int g_slider_position = 10;
CvCapture* g_capture = NULL;
void onTrackbarSlide(int pos) //回调函数(在滚动条被拖动时被调用)//作用:滚动条的位置将会被作为一个32位整数以参数形式传入
{//cvSetCaptureProperty与cvGetCaptureProperty配套cvSetCaptureProperty( //设置或查看CvCapture对象的各种属性g_capture,CV_CAP_PROP_POS_FRAMES, //该参数表示以帧数来设置读入位置,如果想通过视频长度比例来//设置读入位置,可以通过用AVI_RATIO代替FRAMES来实现pos);
}
int main()
{cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);g_capture = cvCreateFileCapture("Example2.avi");int frames = (int)cvGetCaptureProperty( //在此处作用为获取总帧数以对滚动条进行设置g_capture,CV_CAP_PROP_FRAME_COUNT);if (frames != 0){cvCreateTrackbar( //创建滚动条"Position", //滚动条的名字"Example3", //在哪个窗口创建滚动条&g_slider_position, //滚动条的初始位置frames, //总帧数onTrackbarSlide);}IplImage* frame;while (1){frame = cvQueryFrame(g_capture);if (!frame) break;cvShowImage("Example3", frame);char c = cvWaitKey(33);if (c == 27) break;}cvReleaseCapture(&g_capture);cvDestroyWindow("Example3");}