【opencv学习笔记3】视频播放控制

来源:互联网 发布:微信魔音软件下载 编辑:程序博客网 时间:2024/05/11 17:39
完成视频播放功能,需要加入一个滚动条实现。
通过调用cvCreateTrackbar()来创建一个滚动条,获得所需的功能只需要提供一个回调函数。
#include <opencv2\opencv.hpp>  #include <iostream>  #include <string>  #include<highgui.h>#include <cv.h>using namespace cv;  using namespace std;  //定义全局变量int   g_slider_position=0;//定义滚动条位置CvCapture *g_capture=NULL;//定义avi视频的文件途径void  onTrackbarSlide(int pos){cvSetCaptureProperty(//这是设置滚动条的基本参数g_capture,//视频参数CV_CAP_PROP_POS_FRAMES,//以帧数读取文件pos//这是指针位置);}int main(int argc,char **argv){cvNamedWindow("video1",CV_WINDOW_AUTOSIZE);//创建窗口g_capture=cvCreateFileCapture("bike.avi");//读取avi视频文件int frames=(int) cvGetCaptureProperty(g_capture, //capture文件名CV_CAP_PROP_FRAME_COUNT //视频帧总数);if(frames!=0){cvCreateTrackbar("position","video1",&g_slider_position,frames,onTrackbarSlide);}IplImage *frame ;while(1){frame=cvQueryFrame(g_capture);if(!frame)break;onTrackbarSlide(g_slider_position);g_slider_position++;cvShowImage("video1",frame);char c=cvWaitKey(33);if(c==27)break;}cvReleaseCapture(&g_capture);cvDestroyWindow("video1");}


若如果需要实现滚动条随着视频播放移动功能包含进来,一个最简单的方法就是把cvCreateTrackbar的代码插入到帧循环里面。可看下面的例子。
#include <opencv2\opencv.hpp>  #include <iostream>  #include <string>  #include<highgui.h>#include <cv.h>using namespace cv;  using namespace std;  //定义全局变量int   g_slider_position=0;//定义滚动条位置CvCapture *g_capture=NULL;//定义avi视频的文件途径void  onTrackbarSlide(int pos){cvSetCaptureProperty(//这是设置滚动条的基本参数g_capture,//视频参数CV_CAP_PROP_POS_FRAMES,//以帧数读取文件pos//这是指针位置);}int main(int argc,char **argv){cvNamedWindow("video1",CV_WINDOW_AUTOSIZE);//创建窗口g_capture=cvCreateFileCapture("bike.avi");//读取avi视频文件int frames=(int) cvGetCaptureProperty(g_capture, //capture文件名CV_CAP_PROP_FRAME_COUNT //视频帧总数);if(frames!=0){cvCreateTrackbar(//创建滑动条"position","video1",&g_slider_position,//初始滑动位置frames,onTrackbarSlide);}IplImage *frame ;while(1){frame=cvQueryFrame(g_capture);if(!frame)break;onTrackbarSlide(g_slider_position);g_slider_position++;cvCreateTrackbar("position","video1",&g_slider_position,frames,onTrackbarSlide);cvShowImage("video1",frame);char c=cvWaitKey(33);if(c==27)break;}cvReleaseCapture(&g_capture);cvDestroyWindow("video1");}




0 0
原创粉丝点击