使用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 }