类似一个简易播放器,播放一个视频,加个进度条,可以拖动,并且随视频播放而移动。(《学习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);
}
结果: