我想从 Python 访问我的网络摄像头。
我尝试使用VideoCapture扩展(教程),但这对我来说效果不佳,我不得不解决一些问题,例如分辨率 >320x230 时它有点慢,有时它会None
无缘无故地返回。
有没有更好的方法从 Python 访问我的网络摄像头?
我想从 Python 访问我的网络摄像头。
我尝试使用VideoCapture扩展(教程),但这对我来说效果不佳,我不得不解决一些问题,例如分辨率 >320x230 时它有点慢,有时它会None
无缘无故地返回。
有没有更好的方法从 Python 访问我的网络摄像头?
OpenCV 支持从网络摄像头获取数据,默认情况下它带有 Python 包装器,您还需要安装numpy
OpenCV 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")
gstreamer 可以处理网络摄像头输入。如果我没记错的话,它有 python 绑定!
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') <-- 按键时销毁窗口