You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS系统下使用Python+OpenCV进行视频捕获失败如何解决

问题原因
  • macOS系统隐私权限限制:macOS 10.14 Mojave及以上版本对摄像头访问做了严格的权限管控,运行Python代码所用的终端/IDE未被授予摄像头访问权限时,系统就会输出你看到的Checked Property相关日志,同时弹出权限申请异常窗口,导致OpenCV无法正常读取摄像头帧。
  • 代码本身存在逻辑缺陷:没有对摄像头初始化、帧读取的结果做合法性校验,且cv2.waitKey(1)仅会等待1毫秒就会继续执行,后续没有资源释放逻辑,也会导致窗口异常闪退、捕获流程无法正常完成。
解决方案
  1. 完成摄像头权限配置
    打开「系统设置」>「隐私与安全性」>「摄像头」,勾选你运行代码所用的终端(Terminal/iTerm2等)或IDE(VSCode/PyCharm等)的权限选项,重启对应的应用后再运行代码。
  2. 修正代码逻辑,添加合法性校验和资源释放逻辑,参考代码如下:
import cv2

# 校验分类器是否加载成功
trained_face_data = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
if trained_face_data.empty():
    print("人脸分类器加载失败,请检查文件路径")
    exit()

# 校验摄像头是否成功打开
webcam = cv2.VideoCapture(0)
if not webcam.isOpened():
    print("摄像头打开失败,请检查权限或设备连接")
    exit()

ret, frame = webcam.read()
# 校验帧是否读取成功
if not ret:
    print("帧读取失败")
    webcam.release()
    exit()

grayscaled_img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

cv2.imshow('image face detector', grayscaled_img)
# 等待任意按键按下后再关闭窗口,0表示无限等待
cv2.waitKey(0)

# 释放摄像头资源、销毁所有窗口
webcam.release()
cv2.destroyAllWindows()
  1. 若完成上述两步后仍无法正常运行,可尝试重新安装OpenCV依赖,执行命令:
    pip uninstall -y opencv-python opencv-python-headless && pip install opencv-python

内容的提问来源于stack exchange,提问作者WiwicodeX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:45:08