opencv 实现进度控制

系统 1405 0

进度控制:

    #include <opencv\cv.h>

#include <opencv\highgui.h>

#include <opencv\cxcore.h>

//记录滚动条的当前位置

int g_slider_pos = 0;



//滚动条的回调函数  参数int pos 是指当前滚动条所在位置

void on_changed(int pos)

{

	//输出滚动条当前所在位置

	printf("g_slider_pos is %d \n" , g_slider_pos);



}



int main(int argc, char* argv[])

{

	//创建一个窗口

	cvNamedWindow("show");



	//在窗口show上创建名字为Position的滚动条

	cvCreateTrackbar(

			"Position",

			"show",

			&g_slider_pos,

			400,

			on_changed

			);



	//显示滚动条

	cvShowImage("show",NULL);



	//等待用户按键

	cvWaitKey(0);



	return 0;

}
  


视频化的进度控制:

    #include <opencv\cv.h>

#include <opencv\highgui.h>

#include <opencv\cxcore.h>





//声明一个CvCapture类型指针 用于接收cvCreateFileCapture的返回值

 

CvCapture* g_capture = NULL;



//记录滚动条的当前位置

 

int g_slider_pos = 0;



//对视频帧进行计数的变量

 

int frame_count = 0;



//滚动条的回调函数  参数int pos 是指当前滚动条所在位置

 

void onTrackbarSlider(int pos)

 

{

 

        //设置g_capture的属性  使得 从位置pos开始播放视频

 

        cvSetCaptureProperty(

 

                g_capture,

 

                CV_CAP_PROP_POS_FRAMES,

 

                pos

 

                );        

 



        //在拉动滚动条后  保持变量frame_count与滚动条的位置是同步的

 

        frame_count = pos ;

 





}

 



int main(int argc, char* argv[])

 

{

 



        //创建一个窗口

 

        cvNamedWindow("show");

 



        //打开有一个视频文件

 

        g_capture = cvCreateFileCapture("C:\\Users\\zxl\\Desktop\\1.avi");

 



        //获取视频的总帧数

 

        int frames = (int)cvGetCaptureProperty(

 

                                         g_capture,

 

                                         CV_CAP_PROP_FRAME_COUNT

 

                                         );

 

        if(frames>0)

 

        {

 

                //在窗口show上创建名字为Position的滚动条

 

                cvCreateTrackbar(

 

                        "Position",

 

                        "show",

 

                        &g_slider_pos,

 

                        frames,

 

                        onTrackbarSlider

 

                        );

 

        }

 



        //图像指针变量

 

        IplImage* frame;

 



        while(1)

 

        {

 

                //从g_capture获取一帧图像 填充到相应的内存缓冲区

 

                frame = cvQueryFrame(g_capture);

 



                //如果到视频结尾 则退出循环

 

                if(!frame)

 

                {

 

                        break;

 

                }

 





                //显示图像

 

                cvShowImage("show",frame);

 



                //接收用户按键

 

                char c = cvWaitKey(33);

 



                //如果接收到 按键'Esc' 则退出循环

 

                if(c==27)

 

                {

 

                        break;

 

                }

 



                //滚动条 随着视频的播放 进行移动

 

                cvSetTrackbarPos("Position","show", frame_count);

 

                frame_count++;

 



        }

 



        //释放资源

 

        cvReleaseCapture(&g_capture);

 

        cvDestroyWindow("show");

 



        return 0;

 

}

 
  


 

 

 

opencv 实现进度控制


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论