============这节课带大家用opencv做一个带滚动条的播放器=================
!!!!!!!!!!建议对照上两节课的播放器进行对比!!!!!!!!!!!!
!!!!!!!!!!!!还有这个源码也是对应网上流传的opencv视频教程!!!!!!!!!!!但是绝对是自己手打的,只是思路跟着视频学的而已
CvCapture *capture;
//callback函数 进度条
void OnChangeBar(int pos){
//printf("postion:%d \n",pos);
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES,pos);
}
//读取视频代码 加上滚动条的版本
void CaptureShowFunc1_0(){
//读取视频数据
capture = cvCreateFileCapture("E:\\CProjects\\opencv\\TempPic\\test.wmv");
//capture = cvCreateFileCapture("E:\\CProjects\\opencv\\ConsoleApplication1\\ConsoleApplication1\\out.avi");
//读取摄像头
//CvCapture *capture = cvCreateCameraCapture(0);
//创建放置视频的窗口
cvNamedWindow("myWindow", CV_WINDOW_AUTOSIZE);
IplImage * frame;//放置视频当前帧的图片
int *trackBarCurPos = 0;//当前滚动条所在的位置
int frameCount = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);//获取整个视频一共有多少帧
cvCreateTrackbar("trackBar", "myWindow", trackBarCurPos, frameCount, OnChangeBar);//创建滚动条
while (true)
{
frame = cvQueryFrame(capture);
if(frame == NULL){
break;
}
//展示当前帧的图片
cvShowImage("myWindow", frame);
int curFrameCount = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES);
cvSetTrackbarPos("trackBar", "myWindow", curFrameCount);
char c = cvWaitKey(33);
if (c == 27)
{
break;
}
}
//释放视频
cvReleaseCapture(&capture);
//销毁窗口
cvDestroyWindow("myWindow");
}
/* create trackbar and display it on top of given window, set callback */
CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name,
int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));
cvCreateTrackbar
参数一:滚动条名字
参数二:展示在哪个窗口
参数三:当前滚动条的位置
参数四:滚动条有多少个posion
参数五:回调函数