cv中实现滚动条随着视频播放移动

来源:互联网 发布:电磁炮 激光炮 知乎 编辑:程序博客网 时间:2024/05/29 08:38
废话不多说直接给代码。#include "cv.h"#include "highgui.h"#include using namespace std;using namespace cv;int g_slider_position = 0;//定义滑块的位置CvCapture* g_capture = 0;//定义一个可以包含所有文件信息的数据类型CvCaptureint n = 0; //定义一个全局变量,控制滚动条的位置//回调函数,当滚动条被拖动时调用。void onTrackbarSlide(int pos){cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,//这个参数表示我们使用帧数来设置读入位置。AVI_RATIO表示使用视频长度比例来设置读入位置pos //我们把新的滚动条位置作为参数传入);//n = pos;//return;}int main(int argc,char** argv){cvNamedWindow("Example3",CV_WINDOW_AUTOSIZE);//命名窗口g_capture = cvCreateFileCapture("aa.mp4");//通过参数设置确定要读入的文件int frames = (int) cvGetCaptureProperty(//获取录制视频的所有权g_capture,CV_CAP_PROP_FRAME_COUNT ); //获取视频文件的总帧数if(frames!=0){// cvCreateTrackbar用来创建滚动条,我们可以设置滚动条的名称并确定滚动条的所属窗口cvCreateTrackbar("Position","Example3",&g_slider_position,frames,onTrackbarSlide);}IplImage* frame;while (1){frame = cvQueryFrame(g_capture);if(!frame) break;cvShowImage("Example3",frame);cvSetTrackbarPos( "Position", "Example3", n++ ); //cout << n << endl; char c = cvWaitKey(10);if (c==27){break;}}cvReleaseCapture(&g_capture);cvDestroyWindow("Example3");}
0 0
原创粉丝点击