博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于OpenCV打开摄像头的控制台程序
阅读量:4106 次
发布时间:2019-05-25

本文共 1492 字,大约阅读时间需要 4 分钟。

#include "stdio.h"#include "cv.h"#include "highgui.h"using namespace cv;/*IplImage类型*/void OpenCamera1(){	/*读取摄像头	 *cvCreateCameraCapture和cvCaptureFromCAM都有初始化从摄像头中获取视频的功能	 *参数设置为0,打开电脑自带的摄像头;参数设置为1,打开外置的USB摄像头	 */	CvCapture* capture = NULL;	//创建一个来自摄像头的capture	capture = cvCreateCameraCapture(0);	//capture = cvCaptureFromCAM(0);	IplImage* frame;	cvNamedWindow("Show1");		while(1){		//从capture中读取下一帧画面,在while循环中不断调用这一句,就能不断得到新画面		frame = cvQueryFrame(capture);		if(!frame) break;		cvShowImage("Show1",frame);		/*cvWaitkey(int delay)函数		 *当delay小于等于0的时候,		 *如果没有键盘触发,则一直等待,此时的返回值为-1,否则返回值为键盘按下的码字;		 *当delay大于0时,		 *如果没有键盘的的触发,则等待delay的时间,此时的返回值是-1,否则返回值为键盘按下的码字。		 */		char c = cvWaitKey(50);//等待用户按下Esc键50ms		if(c==27) break;//如果按下Esc键,退出循环	}	cvReleaseCapture(&capture);	cvDestroyWindow("Show1");}/*Mat类型*/int OpenCamera2(){	//VideoCapture类的构造函数	VideoCapture capture(0);//参数为0,表示打开默认摄像头	if(!capture.isOpened())//检测摄像头是否正常打开		return -1;	namedWindow("Show2");	Mat frame;	while(1){		capture>>frame;//从摄像头获取当前一帧图像		if(frame.empty()) break;		imshow("Show2",frame);		if(waitKey(50)>=0) break;	}	//摄像头会在VideoCapture的析构函数中释放	return 0;}int main(){	OpenCamera1();	//OpenCamera2();	return 0;}

由于课程设计需求,要打开电脑上的摄像头,对获取的图像进行处理。在网上找了很多打开摄像头的代码,方法很多,现总结两种方法。其实只是因为图片的格式有差别,导致方法上有些略微的差别。代码如上所示,注释比较齐全。

这里总结一些IplImageMat的知识。IplImage是表示一个图像的结构体,通过cvCreateImage创建内存图像数据,创建后复制像素到创建的内存,结束之后通过cvReleaseImage等函数释放掉内存。Mat类型可以通过构造函数Mat直接创建,比较方便。

参考博客:http://blog.csdn.net/chinabinlang/article/details/40982065

运行结果:

你可能感兴趣的文章
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
200页!分享珍藏很久的Python学习知识手册(附链接)
查看>>
推荐几个私藏很久的技术公众号给大家
查看>>
王垠受邀面试阿里 P9,被 P10 面跪后网上怒发文,惨打 325 的 P10 赵海平回应了!...
查看>>
Python 趣味打怪:147 段简单代码助你从入门到大师
查看>>
卧槽!小姐姐用动画图解 Git 命令,这也太秀了吧?!
查看>>
厉害了!Python 编辑器界的神器 Jupyter ,推出官方可视化 Debug 工具!
查看>>
卧槽!Java 虚拟机竟然还有这些性能调优技巧...
查看>>
听说玩这些游戏能提升编程能力?
查看>>
7 年工作经验,面试官竟然还让我写算法题???
查看>>
被 Zoom 逼疯的歪果仁,造出了视频会议机器人,同事已笑疯丨开源
查看>>
再见,Eclipse...
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
漫话:为什么你下载小电影的时候进度总是卡在 99% 就不动了?
查看>>
我去!原来大神都是这样玩转「多线程与高并发」的...
查看>>
当你无聊时,可以玩玩 GitHub 上这个开源项目...
查看>>
B 站爆红的数学视频,竟是用这个 Python 开源项目做的!
查看>>
安利 10 个让你爽到爆的 IDEA 必备插件!
查看>>
自学编程的八大误区!克服它!
查看>>