基於opencv給視訊加上進度條
阿新 • • 發佈:2018-12-10
platform: opencv 3.4.2 &vs 2017
#include "cv.h" #include "highgui.h" int g_slider_position = 0; CvCapture * g_capture = NULL; //再拖動滾動條的時候,滾動條的位置會被作為int數字傳入g_capture。 void onTrackbarSlide(int pos) { cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos ); } int main() { cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);//申請可以自動調節大小的視窗Example1 g_capture = cvCreateFileCapture("..//..//kris.avi");//讀取avi格式的影片 //獲取視訊總幀數。 int frames = (int)cvGetCaptureProperty( g_capture, CV_CAP_PROP_FRAME_COUNT ); /*注意cvCreateTrackbar函式的引數: "Position"是進度條的名稱; "Example3"視窗的名稱; "&g_slider_position" 一個指向int的地址,初始化進度條用的; "frames"總幀數; "onTrackbarSlider"函式,拖動進度條的反饋 */ if (frames != 0) { cvCreateTrackbar( //進度條 "Position", "Example3", &g_slider_position, frames, onTrackbarSlide ); } IplImage * frame; while (1) { frame = cvQueryFrame(g_capture);//讀取下一個影片幀率 if (!frame)break; cvShowImage("Example3", frame); char c = cvWaitKey(33); //每讀取一個視訊片度就停止33毫秒,並且會收集鍵盤的輸入 if (c == 27)break;//27就是對應鍵盤上的ESC建,如果沒有按鍵盤的話C為-1 } cvReleaseCapture(&g_capture); cvDestroyWindow("Example2"); return 0; }