最近在接触机器视觉方面的东西,这就意味着离不开要学习使用opencv,所以想从一些小的方面入手。对于机器视觉,第一步要做的就是采集图像,所以先学习了下如何用opencv调用摄像头进行图像采集。
实验平台是windows7下python3.5+对应opencv版本,懒人先看代码:
运行后,会弹出一个动态的摄像头采集画面显示窗口:
接下来说说作为菜鸟的我的摸索过程吧,刚开始网上查看了一下别人的代码,但毕竟不太懂,于是就开始一步一步的去测试每行代码的作用。总的来说,打开摄像头进行画面采集有几个步骤:
1、选择摄像头设备进行打开。cv2.VideoCapture(0)只是创建了一个cap对象,参数0是指打开笔记本内置的摄像头,如果外接了其他摄像头,则调整为相应的参数值。而cap.open(0)则是真正打开笔记本内置的摄像头,运行次代码后你会发现摄像头的指示灯会亮。
2、读取摄像头采集到的数据。调用cap.read()会返回两个值,ret为布尔值,Ture为读取成功,False表示读取失败;frame则是返回的一帧图像。如果你不确定是否读取成功,可以像我一样直接把这两个参数打印输出。若读取失败,[ ret frame ]则为[ False None],反之则为[ True [图像数据] ]。
3、对采集得到的图像数据进行显示、保存或其他操作,这个就不多说了。
4、当然是自动关闭显示窗口和摄像头了。
总的来说,对不太理解的代码,尝试去运行,或者打印输出其返回值,是一个很不错的办法。