打开摄像头,并获取到一个图片,然后循环显示出来。
python的基本语法:
1、#是注释的开始,相当于c里面的双斜杠
2、三引号包裹的是注释,相当于c里面的/* */组合
3、严格依赖缩进作为程序的层次,同一层次的代码必须缩进相同,可以理解为{}组合
摄像头是这样的:
我只是拿来用,不卖的,不要找我问更多细节。
代码如下:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import cv2
#导入opencv
cap = cv2.VideoCapture(1)
#声明用第几个摄像头来获取数据,默认通常是0,我的电脑上0是笔记本自带的摄像头,1是外接的摄像头
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G'))
#设置MJPG格式采集数据,因为有一次有损压缩图像质量会降低
#如果不声明则是YUV,因为没有压缩高分辨率的时候响应极慢
cap.set(cv2.CAP_PROP_FRAME_WIDTH,2048)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,1536)
#一般笔记本的内置摄像头可以支持到1280×720分辨率
#有的摄像头会自动设置最接近的可用分辨率,有的不能
cap.set(cv2.CAP_PROP_SETTINGS, 0)
#打开摄像头的控制面板,不管设置参数是什么都会自动打开,程序中没找到如何关掉
cap.set(cv2.CAP_PROP_FOCUS, 42)
#只要设置了这个参数,就不再自动调焦,我这个外置摄像头带自动聚焦功能,默认初始得不到清晰图像,并且不确定什么时候会自动重调
#先用固定焦距方式来快速实现,未来可以读取这个参数,判定目标是否到位。
#cap.set(cv2.CAP_PROP_AUTOFOCUS, 1)
#设置1开启自动调焦,设置0关闭
#cap.set(cv2.CAP_PROP_BACKLIGHT, 4)
#猜测为背光灯,但是没作用
#cap.set(cv2.CAP_PROP_AUTO_EXPOSURE,0)
#猜测是自动曝光控制,在我的硬件上无效
#cap.set(cv2.CAP_PROP_EXPOSURE,-7)
#曝光补偿控制,我的摄像头只支持0到-7,数字越小越暗,这个没找到重新变成自动的参数
while 1:
#死循环
ret, frame = cap.read()
#读取1副图片
cv2.imshow("cap", frame)
#显示这个图片
if cv2.waitKey(10) & 0xff == ord('q'):
break
#遇到q键退出程序,用关闭按钮也很方便
cap.release()
cv2.destroyAllWindows()