您的位置:首页 > 运维架构

OpenCV学习笔记(3)——进度条视频播放控制

2016-06-30 14:34 579 查看
这里用一个进度条控制视频的播放快慢,以帧为单位控制进度条。

代码如下:

#include "opencv/cv.h"
#include "opencv/highgui.h"

int  g_slider_position  = 0;//滚动条的位置变量
CvCapture* g_capture = NULL;//视频文件结构体

void onTrackbarSlider(int pos)//回调函数
{
cvSetCaptureProperty(//cvGetCaptureProperty设置CvCapture对象的各种属性。
g_capture,
CV_CAP_PROP_POS_FRAMES,//以帧数设置读入的位置,将FRAMES替换为AVIRATIO则可以通过视频长度设置读入的位置
pos
);
}

int main( int argc, char** argv )
{
cvNamedWindow( "Pirate", 0);//创建窗口
g_capture = cvCreateFileCapture( argv[1] );//获取视频结构体
int frames = (int) cvGetCaptureProperty(    //获取视频文件的总帧数
g_capture,
CV_CAP_PROP_FRAME_COUNT
);
if( frames!= 0 ) {
cvCreateTrackbar(
"Position", //滚动条的名字
"Pirate",   //滚动条所属的窗口的名字
&g_slider_position, //绑定滚动条的位置变量
frames, //总帧数
onTrackbarSlider    //回调函数
);
}

IplImage* frame;//图像结构体
// While loop (as in Example 2) capture & show video
while(1){
frame = cvQueryFrame(g_capture);
if(!frame)break;
cvShowImage("Pirate",frame);

cvSetTrackbarPos( "Position", "Pirate", g_slider_position++);//设置进度条的位置

char c = cvWaitKey(5);
if(c == 27)break;
}
// Release memory and destroy window
cvReleaseCapture(&g_capture);
cvDestroyWindow("Pirate");

return(0);

}


视频控制结果如图所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: