1.首先安装OpenCV,当然所用电脑要有摄像头,且接入网络。比较简单粗暴的做法是到Python所在的目录下,.\Scripts下运行
pip install opencv-python
2.以下代码是开启摄像头,按任意键退出:
import cv2
#打开摄像头(只有一个摄像头则编号为0,若有2个则依次为0,1)
camera = cv2.VideoCapture(0)
#创建窗口"Video Cam"
cv2.namedWindow('Video Cam', cv2.WINDOW_NORMAL)
#持续间隔1ms等待按键,若有按键跳出循环
while cv2.waitKey(1)==-1:
#读取摄像头数据
success, frame =camera.read()
# 显示在窗口"Video Cam"上
cv2.imshow('Video Cam', frame)
#断开摄像头
camera.release()
#释放所有窗口
cv2.destroyAllWindows()
3.waitKey(delay)
delay为延时时间,也可以看做间隔时间,单位为毫秒,0表示永远等待。返回值为ASCII键值,没有任何按键时返回值为-1。把cv2.waitKey(1)==-1改为cv2.waitKey(1)!=27,则可实现按ESC键时退出,否则保持状态不变。
4.cv2.imwrite(file,img,num)
用于保存一个图像。第一个参数file是要保存的文件名,第二个参数img是要保存的图像。第三个参数num可选,它针对特定的格式:对于jpeg,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别,默认为3。
修改以上代码,实现以下功能:按空格键截图保存,文件名依次为1.jpg,2.jpg,3.jpg......,按ESC键退出,其它键不响应。所有代码如下:
import cv2
camera = cv2.VideoCapture(0) #打开摄像头(只有一个摄像头则编号为0,若有2个则依次为0,1)
cv2.namedWindow('Video Cam', cv2.WINDOW_NORMAL) #创建窗口"Video Cam"
i=0
while cv2.waitKey(1)!=27: #ESC键 持续间隔1ms等待按键,若有按键跳出循环
success, frame =camera.read() #读取摄像头数据
cv2.imshow('Video Cam', frame) # 显示在窗口"Video Cam"上
if cv2.waitKey(1)==32: #空格键存图像
i=i+1
cv2.imwrite(str(i)+".jpg",frame) #存图像
camera.release() #断开摄像头
cv2.destroyAllWindows() #释放所有窗口
5.若有两个或者更多的摄像头,则需创建更多的窗口,如下:
import cv2
#打开摄像头(只有一个摄像头则编号为0,若有2个则依次为0,1)
camera = cv2.VideoCapture(0)
camera1 = cv2.VideoCapture(1)
#创建窗口"Video Cam","Video Cam1",
cv2.namedWindow('Video Cam', cv2.WINDOW_NORMAL)
cv2.namedWindow('Video Cam1', cv2.WINDOW_NORMAL)
#持续间隔1ms等待按键,若有按键跳出循环
while cv2.waitKey(1)==-1:
#读取摄像头数据
success, frame =camera.read()
success1, frame1 =camera1.read()
# 显示在窗口"Video Cam","Video Cam1"上
cv2.imshow('Video Cam', frame)
cv2.imshow('Video Cam1', frame1)
#断开摄像头
camera.release()
camera1.release()
#释放所有窗口
cv2.destroyAllWindows()
笔记本电脑一般都自带摄像头,若需增加或台式机均需另购,建议选用USB接口无驱型。