OpenCV + OS X + 外部网络摄像头 = 非常慢
Posted
技术标签:
【中文标题】OpenCV + OS X + 外部网络摄像头 = 非常慢【英文标题】:OpenCV + OS X + external webcam = very slow 【发布时间】:2017-06-07 12:17:09 【问题描述】:我在 OS X 上使用带有外部网络摄像头 (Microsoft Cinema HD Lifecam) 的 openCV,即使使用最简单的摄像头读出代码,它的性能也非常低。
import cv2
cap = cv2.VideoCapture(1)
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow("Output", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
我尝试了使用 Photo Booth 的相同网络摄像头,它在高 FPS 下运行良好。此外,我用我的 Mac 的内置 Facetime 摄像头尝试了相同的代码,它运行得非常快。所以,似乎我在 OpenCV 中有某种配置问题。
有人经历过这样的事情吗? 感谢您的回答。
【问题讨论】:
什么是“高FPS”,什么是“非常慢”?另外,在您对伊万的回答中,什么需要 6.2 秒?一帧?什么需要11.4s?一帧?你是如何安装 OpenCV 的? 【参考方案1】:看来我可以解决我的问题。 我只需要降低相机的分辨率。
cap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,480)
我认为 Photo Booth 会自动设置分辨率以提高速度或读数,但是,必须在 OpenCV 中手动设置。不确定这个解释是否正确。
【讨论】:
【参考方案2】:尝试强制执行特定的读取器实现,请参阅here。尝试 CAP_QT 和 CAP_AVFOUNDATION 的选项,完整列表是 here 。请注意,必须构建 OpenCV 以支持阅读器实现。
【讨论】:
内置摄像头6.2s 外置摄像头11.4s以上是关于OpenCV + OS X + 外部网络摄像头 = 非常慢的主要内容,如果未能解决你的问题,请参考以下文章
从OpenCV 3切换到OpenCV 4会导致网络摄像头以最高5帧的速度记录,而不是通常的30帧。
OpenCV 和 python - 裁剪网络摄像头流并将其保存到文件