您的位置:首页 > 运维架构

opencv2.3.1+vs2010摄像头驱动

2013-04-08 21:22 232 查看
记得在大一的时候就有一些想法:用程序去驱动硬件工作。比如摄像头,马达,齿轮,显示器等等,后来学了一段单片机也可以用它来控制一些简单的东西,再后来考研了,把单片机,arm束之高阁了,很久了,很多都遗忘了,但是这些想法还一直萦绕在心头,由于搞了图像处理这一行,所以就一直想着去驱动摄像头工作,采集图像,之前没有涉及都是用的国外的图像库进行处理的,一直也想尝试一下用程序控制一下摄像头,原来opencv里面调用摄像头如此的简单,还用它拍了几张照片很好,很强大。哈哈。继续努力。

程序如下:
// myjob.cpp : 定义控制台应用程序的入口点。
//

/**********************************/
//opencv摄像头驱动
/**********************************/

#include "stdafx.h"
#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/highgui/highgui.hpp"
#include "cv.h"
#include"highgui.h"

#include "iostream"

//采用cv命名空间和标准命名空间

using namespace std;

using namespace cv;
int main()
{
	namedWindow("mycam",1);//创建窗口
	VideoCapture cam(0);//捕获摄像头,
	if(!cam.isOpened())//判断摄像头是否成功打开
	{return -1;}
	Mat frame;//捕获帧
	Mat gray,edge;
	bool stop =false;
	while(!stop)
	{
		cam>>frame;//将摄像头捕获的帧存储到frame中
		imwrite("彩色图像.jpg",frame);
		cvtColor(frame,gray,CV_BGR2GRAY);//转换为灰度图像
		GaussianBlur(gray,edge,Size(7,7),1.5,1.5);//高斯平滑
		Canny(edge,edge,0,20,3);//用canny求边缘
		imshow("mycam",edge);//显示边缘图像。
		imwrite("myface.jpg",edge);//存储边缘图像
		if(waitKey(1000)>=0)
			stop = true;
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: