如何在Python中访问我的网络摄像头?

Rod*_*igo 57 python webcam

我想从Python访问我的网络摄像头.

我尝试使用VideoCapture扩展(教程),但这对我来说效果不好,我不得不解决一些问题,例如它的分辨率> 320x230有点慢,有时它None没有明显的原因返回.

有没有更好的方法从Python访问我的网络摄像头?

Joh*_*ery 59

OpenCV支持从网络摄像头获取数据,默认情况下它附带Python包装器,您还需要安装numpyOpenCV Python扩展(称为cv2)才能工作.
在撰写本文时(2015年1月),还没有Python 3支持,因此您需要使用Python 2.

有关在Python中使用OpenCV的更多信息.

使用opencv和python显示网络摄像头源复制的示例:

import cv2

cv2.namedWindow("preview")
vc = cv2.VideoCapture(0)

if vc.isOpened(): # try to get the first frame
    rval, frame = vc.read()
else:
    rval = False

while rval:
    cv2.imshow("preview", frame)
    rval, frame = vc.read()
    key = cv2.waitKey(20)
    if key == 27: # exit on ESC
        break
cv2.destroyWindow("preview")
Run Code Online (Sandbox Code Playgroud)

  • 如果从wheel安装,则支持Python 3.我成功使用了本教程:https://www.solarianprogrammer.com/2016/09/17/install-opencv-3-with-python-3-on-windows/ (2认同)
  • 您还必须释放相机,否则即使窗口关闭也会打开: vc.release() (2认同)

Rob*_*ert 14

这应该是对@John Montgomery的评论,但我的代表不允许我发表评论.你的答案很棒,但至少在Windows上,它缺少这条线

vc.release()
Run Code Online (Sandbox Code Playgroud)

之前

cv2.destroyWindow("preview")
Run Code Online (Sandbox Code Playgroud)

没有它,相机资源被锁定,并且在python控制台被杀死之前无法再次捕获.