OpenCV播放视频 加上滚动条

新建Win32 Console Application项目opencvvediox

然后在opencvvediox.cpp文件中输入如下代码,并在项目源码目录下放入avi文件:vedio.avi

 

#include "stdafx.h"

// CV模块中包含了图像处理,图像结构分析
// 运动描述和跟踪,模式识别和摄像机标定
#include"cv.h"

//包含了图像和视频的输入和输出
#include"highgui.h"

// 用来标定滚动条当前的位置
 int g_Pos = 0;

 // 将打开的视频文件作为一个全局变量使用
 CvCapture* g_Capture = NULL;

 // 当拖动滚动条后,会回调这个函数
 // 同时会将当前滚动条的位置以32位形式传递过来
 void CallBackTrackBarSlide(int pos)
 {
	 // 这里便是重新设置的视频文件当前播放的帧
	cvSetCaptureProperty(g_Capture,CV_CAP_PROP_POS_FRAMES,pos);
 }

 // 主函数
 int main(int argc, char** argv)
 { 
	 // 创建一个名为vediox的窗口 
	cvNamedWindow("vediox",CV_WINDOW_AUTOSIZE);

	 // 根据参数打开指定的视频文件
	g_Capture = cvCreateFileCapture("vedio.avi");

	 // 获取总的帧数
	int totalFrames = 
		(int) cvGetCaptureProperty(g_Capture,CV_CAP_PROP_FRAME_COUNT);

	if(totalFrames != 0)
	{    
		// 创建滚动条,在这里指定了滚动条拖动后的回调函数
		cvCreateTrackbar("TrackBar","vediox",&g_Pos,totalFrames,CallBackTrackBarSlide);
	}

	IplImage* frame;
	 // 循环地顺序遍历所有的帧
	while(1)
	{
		// 获取当前帧的下一个帧,并将其加载到内存中
		frame = cvQueryFrame(g_Capture);
		if(!frame)
		{
			break;
		}
		cvShowImage("vediox",frame);
		char chKeyCode = cvWaitKey(30);
		if(chKeyCode == 27)
		{
			break;
		}
	}

	cvReleaseCapture(&g_Capture);
	cvDestroyWindow("vediox");

	return 0;
 }


配置项目的OpenCV参数, 然后按下F5 执行,运行

你可能感兴趣的:(null,application,图像处理,avi)