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 - 裁剪网络摄像头流并将其保存到文件

使用 OpenCV Python 从 Android 智能手机捕获视频

Opencv IP 摄像机错误

由于捕获缓冲区,OpenCV VideoCapture滞后

有关opencv无法解码网络摄像头rtsp流的解决办法