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接口无驱型。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐