opencv 实现进度控制

来源:互联网 发布:macbook pro mac air 编辑:程序博客网 时间:2024/06/05 20:15

进度控制:

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


 

 

原创粉丝点击