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

时间:2009-03-03 01:11:45

标签: python webcam

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

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

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

5 个答案:

答案 0 :(得分:49)

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

More information on using OpenCV with 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
cv2.destroyWindow("preview")

答案 1 :(得分:10)

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

vc.release()

cv2.destroyWindow("preview")

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

答案 2 :(得分:1)

gstreamer可以处理网络摄像头输入。如果我记得很清楚,就会有python绑定!

答案 3 :(得分: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')<-在按下键时破坏窗口

答案 4 :(得分:-2)

我唯一使用的是VideoCapture,你已经提到过你不喜欢它(虽然我没有遇到任何问题;你遇到了什么错误?)

我过去或现在都找不到任何替代品,所以你可能会被困在使用VideoCapture,或者找到一个不错的C库并为它编写一个Python包装器(这可能比你愿意的更多的工作投入其中)。