基于Opencv的视频转图像处理

   我们知道Opencv可以获取摄像头权限进行动态获取现实中权限的功能,但是很多时候只能对单张图像进行处理,所以本次我们介绍使用C++语言作为程序设计语言,Opencv3.0函数库作为基石,利用VS2015,将动态从摄像头获取图像进行转图片化处理。

   定义int 类型的videoProcess(VideoCapture& capture),函数用来存储通过截图获得的图片 。

   定义int类型的readPicture(),用来读取显示已经存储好的图片。

   C++代码如下。

#include
#include
#include
#include
#include

using namespace cv;
using namespace std;

//打开并保存视频的图片
int videoProcess(VideoCapture& capture)
{
	int n = 0;
	//存储图片文件夹名字的数组
	char filename[200];
	char numImage[200] = "images";
	//创建的窗口名称
	string window_name = "KINGDOM OF PLANTS";
	//进行操作的提示语
	cout<< "按下【Space】空格键可以截图"<> frame;
		if (frame.empty())
			break;
		putText(frame,"生命不息,进步不止",Point(10,80),1,2,CV_RGB(255,0,0));
		//显示保存了几张照片
		putText(frame,numImage,Point(10,150),3,2,CV_RGB(0,0,255));
		imshow(window_name,frame);
		char key = (char)waitKey(10);
		//响应按键操作,按ESC键q或者Q键可以退出程序,按空格键进行截图。
		switch (key)
		{
		case 'q':
		case 'Q':
		case 27:
			return 0;
		case  ' ':
			sprintf(filename,"E:\\topicture\\%.3d.png",n++);
			sprintf(numImage,"%.2d.png",n);
			imwrite(filename,frame);
			cout << "\n\t保存了图片" << filename << "文件到目录下" << endl;
			break;
		default:
			break;
		}
	}
	return 0;
}
//读取按格式保存的图片
const int width = 600;
const int height = 800;
int readPicture()
{
	Mat src;
	int i;
	string Picture_name="E:\\topicture\\";
	string Picture_name1 = Picture_name;
	char  num[3], num1[3] = "00", num2[5] = ".png";
	vector images;
	for(i=0;i<=3;i++)
	{
		//图片的名字
		_itoa(i,num,10);
		Picture_name += num1;
		Picture_name += num;
		Picture_name += num2;
		images.push_back(Picture_name);
		//输出图片的名字
		cout << Picture_name << endl;
		//从指定文件夹读入图片的名字
		src = imread(Picture_name);
		//判断读取图片是否成功
		if(!src.data)
		{
			cout << "faild read images" << endl;
			getchar();
			return -1;
		}
		imshow(Picture_name, src);
		Picture_name = Picture_name1;
		waitKey(1000);

	}
}
//程序入口主函数
int main(int argc,char** argv)
{
	argv++;
	//请求打开摄像头
	VideoCapture capture(0);
	if(!capture.isOpened())
	{ 
		cerr << "Failed to open a video device or video file!\n" << endl;
		return 1;
	}
	videoProcess(capture);
	readPicture();
	return 1;
}

运行结果如下图所示

基于Opencv的视频转图像处理_第1张图片      基于Opencv的视频转图像处理_第2张图片

你可能感兴趣的:(基于Opencv的视频转图像处理)