使用OpenCV、Python和VS Code无法调用摄像头的问题求助
解决方案
1. 直接指定AVFoundation后端(最快解决)
macOS下OpenCV默认优先使用GStreamer作为视频捕获后端,但该后端在你的环境中配置异常。直接指定使用macOS原生的AVFoundation后端即可绕过问题:
修改代码中创建VideoCapture的行:
cap = cv.VideoCapture(0, cv.CAP_AVFOUNDATION)
替换原有的cap = cv.VideoCapture(0),重新运行代码即可。
2. 重新安装不依赖GStreamer的OpenCV版本
如果希望永久解决,可卸载现有OpenCV并安装仅支持原生后端的版本:
- 卸载现有包:
pip uninstall opencv-python opencv-contrib-python -y - 安装指定版本的headless包(与教程版本一致,且默认不包含GStreamer依赖):
pip install opencv-python-headless==4.6.0.66
3. 修复GStreamer配置(可选,较繁琐)
若坚持使用GStreamer,需确保系统已安装完整的GStreamer组件:
- 通过Homebrew安装:
brew install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly - 重新编译OpenCV并启用GStreamer支持(仅推荐有编译经验的用户操作)
原因分析
摄像头指示灯亮起说明硬件被系统识别,但OpenCV的GStreamer后端在初始化视频管道时失败,导致代码卡在摄像头初始化步骤。AVFoundation是macOS原生的多媒体框架,与系统摄像头兼容性更好,因此切换后端是最直接的解决方案。
内容的提问来源于stack exchange,提问作者Ashton T. Sperry
相关产品推荐
相关产品推荐

