使用opencv实现进度条随视频播放而移动

主要目的是实现进度条随视频的播放前进,利用opencv的cvCreateTrackbar和cvSetTrackbarPos两个函数,代码如下:

 1 #include "highgui.h"
 2 #include "cv.h"
 3 int  g_slider_position = 1000;
 4 CvCapture* g_capture = NULL;
 5 void onTrackbarSlider(int pos){
 6     cvSetCaptureProperty(
 7         g_capture,
 8         CV_CAP_PROP_POS_FRAMES,
 9         pos
10     );
11 }
12 int main(int argc, char** argv){
13     cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);
14     g_capture = cvCreateFileCapture("D:\\untitled2\\1.avi");
15     int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
16     if (frames != 0){
17         cvCreateTrackbar("位置", "Example3", &g_slider_position, frames,onTrackbarSlider);
18     }
19     IplImage* frame;
20     while (1){
21         frame = cvQueryFrame(g_capture);
22         g_slider_position = cvGetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES);
23         cvSetTrackbarPos("位置", "Example3", g_slider_position);
24 //        
25         if (!frame) break;
26         cvShowImage("Example3", frame);
27         char c = cvWaitKey(33);
28         if (c == 27)break;
29     }
30     cvReleaseCapture(&g_capture);
31     cvDestroyAllWindows();
32     return(0);
33 
34 }

 

posted @ 2016-12-06 21:44  boguny  阅读(324)  评论(0编辑  收藏  举报