79

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

我尝试使用VideoCapture扩展(教程),但这对我来说效果不佳,我不得不解决一些问题,例如分辨率 >320x230 时它有点慢,有时它会None无缘无故地返回。

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

4

3 回答 3

93

OpenCV 支持从网络摄像头获取数据,默认情况下它带有 Python 包装器,您还需要安装numpyOpenCV Python 扩展(称为cv2)才能工作。截至 2019 年,您可以使用 pip 安装这两个库: pip install numpy pip install opencv-python

有关将 OpenCV 与 Python 结合使用的更多信息

从Displaying webcam feed using opencv and 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

vc.release()
cv2.destroyWindow("preview")
于 2009-03-03T12:09:22.660 回答
2

gstreamer 可以处理网络摄像头输入。如果我没记错的话,它有 python 绑定!

于 2009-03-03T02:33:17.227 回答
0
import cv2 as cv

capture = cv.VideoCapture(0)

while True:
    isTrue,frame = capture.read()
    cv.imshow('Video',frame)
    if cv.waitKey(20) & 0xFF==ord('d'):
        break

capture.release()
cv.destroyAllWindows()

0 <-- 指摄像头,替换为文件路径读取视频文件

cv.waitKey(20) & 0xFF==ord('d') <-- 按键时销毁窗口

于 2020-11-05T10:36:15.583 回答