视频播放控制,添加一个滚动条 。(拖动/自动)

1,代码及注释(只注释新功能代码)

/*创建一个全局变量来表示滚动位置,并添加一个回调函数来更新和重新设置视频读入位置*/

#include "highgui.h"

#incldue "cv.h"

//定义滚动全局变量

int g_slider_postion = 0;

//定义CvCapture对象为全局变量(回调函数会用到CvCapture对象)

CvCapture* g_capture = NULL;

//定义回调函数

void onTrackBarSlide(int pos){

    cvSetCaptureProperty(    //用于设置CvCapture对象的各种属性;

       g_capture,

       CV_CAP_PROP_POS_FRAMES,//以帧数来设置读入位置(可以用百分比 AVI_RATIO代替FRAMES)

        pos      //读入pos帧数位置的图像

    );

}
 

int main(int argc,char** argv){

    cvNameWindow("Example3",CV_WINDOW_AUTOSIZE);

    g_capture = cvCreateFileCapture("vedio.avi");

//获取视频的总帧数,便于对滚动条的设置

    int frames = (int)cvGetCaptureProperty(  //用于获取CvCapture对象的属性

        g_capture,

        CV_CAP_PROP_FRAME_COUNT,

    );

    if(frames!=0){    //获取不到帧数时,不创建滚动条

        cvCreateTrackBar(   

            "position",    //滚动条名

            "Example3",    //所在窗口名

            &g_slider_position,   //启始位置

            frames,    //结束位置

            onTrackBarSlide  

        );

    }

//显示avi视频

  /***见上一博文https://blog.csdn.net/qq_40142351/article/details/81158412***/

}

2,核心代码截图

3,遇到的问题

  • Q: 如何使滚动条随视频移动?

       A:让滚动条位置全局变量随视频的播放而增加,

          在播放每一帧之前创建滚动条;

         

猜你喜欢

转载自blog.csdn.net/qq_40142351/article/details/81185353