類似一個簡易播放器,播放一個視頻,加個進度條,可以拖動,並且隨視頻播放而移動。(《學習OpenCV》P23-26)
正常播放一個視頻。
cvCreateTrackbar創建一個滾動條,當滾動的時候觸發回調函數onTrackBarSlide。
cvGetCaptureProperty和cvSetCaptureProperty,標準的get和set函數,一個獲取視頻屬性,一個設置視頻屬性。這裏獲取和設置的是視頻的幀的位置,所以用CV_CAP_PROP_POS_FRAMES來表示。
#include"cv.h"
#include"highgui.h"
int g_slider_position = 0;
CvCapture* g_capture = NULL;
void onTrackBarSlide(int pos){
cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, pos);
}
int main(){
cvNamedWindow("視頻播放控制", CV_WINDOW_AUTOSIZE);
g_capture = cvCreateFileCapture("D:\\OPENCV實驗\\video1.avi");
int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
if(frames != 0){
cvCreateTrackbar("滾動條", "視頻播放控制", &g_slider_position, frames, onTrackBarSlide);
}
IplImage* frame;
int pos2;
while (1){
frame = cvQueryFrame(g_capture);
if (!frame){
break;
}
cvShowImage("視頻播放控制", frame);
pos2 = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES);
cvSetTrackbarPos("滾動條", "視頻播放控制", pos2);
cvWaitKey(33);
}
cvReleaseImage(&frame);
cvDestroyWindow("視頻播放控制");
return(0);
}
結果: