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


这里用一个进度条控制视频的播放快慢,以帧为单位控制进度条。

代码如下:

#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);

}



视频控制结果如图所示:


















  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值