我想从Python访问我的网络摄像头.
我尝试使用VideoCapture扩展(教程),但这对我来说效果不好,我不得不解决一些问题,例如它的分辨率> 320x230有点慢,有时它None
没有明显的原因返回.
有没有更好的方法从Python访问我的网络摄像头?
OpenCV支持从网络摄像头获取数据,默认情况下它附带Python包装器,您还需要安装numpy
OpenCV 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")
这应该是对@John Montgomery的评论,但我的代表不允许我发表评论.你的答案很棒,但至少在Windows上,它缺少这条线
vc.release()
之前
cv2.destroyWindow("preview")
没有它,相机资源被锁定,并且在python控制台被杀死之前无法再次捕获.