Python 获得摄像头捕捉的图像
很多时候,我们都需要通过摄像头捕获图像,以便进行处理,在这里分享的是通过OPEN CV这个库来实现。
OPEN CV的安装和使用
安装很简单,相关文章也很多,注意一点,不要安装最新版本,要安装上一个大版本的最后一发行版本。
即,如果当前最新版本是4.6.xx,那么就安装4.5.xx的最新版本即可。否则很容易遇到各种问题。
如果安装后遇到代码提示功能不正常的话,请看这里:python pycharm中使用opencv时,没有代码自动补全提示。
安装摄像头
首先要保证有一个可以正常使用的摄像头,并正确安装驱动。如下图:
测试摄像头是否正常工作
可以用AMCAP这个经典软件工具,也可以在这里下载:AMCAP下载
下图设置中,点一下“默认值”按钮,以恢复出厂设置状态,以免因为设置问题导致显示不正常。
下图设置中,很多摄像头必须选择MJPG,才能达到最高帧率。这一点需要与摄像头厂家沟通一下。
在Options菜单中,勾选第1项,即可查看摄像头画面。
如果正常显示如下图,那么可以确定摄像头能够正常工作。
代码编写
直接复制以下代码,即可正常显示。按Q键退出示例程序。
import cv2
class Camera:
def __init__(self):
self.cap = cv2.VideoCapture(0) # 打开摄像头
self.cap.set(3, 1120) # 宽度960
self.cap.set(4, 630) # 高度540
def get_img(self):
if self.cap.isOpened():
ret, img = self.cap.read() # 读摄像头, 返回2个参数, 第1个是布尔值, 若图像正确则为真. 第2个是图像三维像素矩阵
cv2.imshow('Camera picture', img)
return img
def free(self):
self.cap.release()
cv2.destroyAllWindows()
def camera_test():
camera = Camera()
while True:
img = camera.get_img()
if (cv2.waitKey(1) & 0xFF) == ord('q'):
cv2.imwrite(".\\img\\test.jpg", img)
break
if __name__ == '__main__':
camera_test()