OpenCV视频进度播放控制

       本来打算把进度条嵌入MFC的PIC空间里面,结果显示进度条消失,看来还是不要这个样子了。

全局变量区域:

//2.初始化进度条的位置
int   G_slider_position   =     0;
CvCapture*    G_capture   =  NULL;
//cv::VideoCapture    G_capture   =  NULL;
bool    G_StatePlay = false;

全局回调函数:

//2.进度条的回调函数,播放进度控制
void onTrackbarSlide(int  Pos)
{ 
	cvSetCaptureProperty(G_capture, CV_CAP_PROP_POS_FRAMES, Pos);//设置视频
	cvSetTrackbarPos("Trackbar Name","VideoBar" , Pos);

	IplImage* frameS=cvQueryFrame(G_capture);
	cv::Mat frameDst(240,320,CV_8UC3);

	//resizeImage( frameS, frameDst);
	cv::Mat  MatSrc( (frameS) ) ;
	cv::resize(MatSrc,frameDst,frameDst.size() );

	cv::imshow("VideoBar",frameDst);
	
	cv::waitKey(0);
	cvReleaseImage(&frameS); 
}

控制播放的代码:

bool CPicToolsDlg::initTrackBar()
{
	//捕获视频
	//G_capture=cvCreateFileCapture("video.long.raw.avi");
	//获取视频的帧数
	int frames = (int) cvGetCaptureProperty(G_capture,CV_CAP_PROP_FRAME_COUNT);

	//从第N-100帧开始显示
	int Pos =100;
	cvSetCaptureProperty(G_capture,CV_CAP_PROP_POS_FRAMES,Pos);  

	//建立进度条
	if(frames!=0)
	{
		cvNamedWindow("VideoBar",CV_WINDOW_AUTOSIZE);
		cvCreateTrackbar("Trackbar Name","VideoBar" ,&G_slider_position,frames, onTrackbarSlide);
	}

	return true;
}

控制效果:

 






posted @ 2015-09-09 08:32  wishchin  阅读(337)  评论(0编辑  收藏  举报