macOS系统下使用Python+OpenCV进行视频捕获失败如何解决
问题原因
- macOS系统隐私权限限制:macOS 10.14 Mojave及以上版本对摄像头访问做了严格的权限管控,运行Python代码所用的终端/IDE未被授予摄像头访问权限时,系统就会输出你看到的
Checked Property相关日志,同时弹出权限申请异常窗口,导致OpenCV无法正常读取摄像头帧。 - 代码本身存在逻辑缺陷:没有对摄像头初始化、帧读取的结果做合法性校验,且
cv2.waitKey(1)仅会等待1毫秒就会继续执行,后续没有资源释放逻辑,也会导致窗口异常闪退、捕获流程无法正常完成。
解决方案
- 完成摄像头权限配置
打开「系统设置」>「隐私与安全性」>「摄像头」,勾选你运行代码所用的终端(Terminal/iTerm2等)或IDE(VSCode/PyCharm等)的权限选项,重启对应的应用后再运行代码。 - 修正代码逻辑,添加合法性校验和资源释放逻辑,参考代码如下:
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()
- 若完成上述两步后仍无法正常运行,可尝试重新安装OpenCV依赖,执行命令:
pip uninstall -y opencv-python opencv-python-headless && pip install opencv-python
内容的提问来源于stack exchange,提问作者WiwicodeX
相关产品推荐
相关产品推荐

