opencv视频控制的滚动条
在看学习opencv,看到视频控制的一个例子,很迷惑。
我想让滚动条控制视频的播放(avi文件),滚动条拉到哪,就能从哪播放,用帧控制的方法,对于什么时候会调用onTrackbarSlide,参数的传递,整不明白了,下面有程序的整体框架。
哪位朋友能指点下,最好有能运行的程序,谢谢。
#include <highgui.h>
#include <cv.h>
#include <iostream>
using namespace std;
int g_slider_position = 0;
CvCapture* g_capture = NULL;
void onTrackbarSlide(int pos){
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES,
pos
);
}
int main(int argc, char** argv){
cvNamedWindow("2_3",CV_WINDOW_AUTOSIZE);
if (argc!=2){
cout<<"请输入程序参数,运行方式:程序名 path"<<endl;
return 0;
}
g_capture = cvCreateFileCapture(argv[1]);
int frames = (int)cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT);
if (frames != 0){
cvCreateTrackbar("Position",
"2_3",
&g_slider_position,
frames,
onTrackbarSlide
);
}
IplImage* frame;
while(1){
frame=cvQueryFrame(g_capture);
if (!frame) break;
cvShowImage("2_3",frame);
//控制语句应该在这里吧?
//?cvSetTrackbarPos("Position","2_3",);
char c = cvWaitKey(33);
if(c == 27) break;
}
cvReleaseCapture(&g_capture);
cvDestroyWindow("2_3");
return 0;
}