opencv(4)--cvCreateTrackbar一个有滚动条的播放器

opencv(4)--cvCreateTrackbar一个有滚动条的播放器_第1张图片

============这节课带大家用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

参数五:回调函数

你可能感兴趣的:(opencv,opencv,视频,源码)