You need to enable JavaScript to run this app. PyCharm运行OpenCV调用摄像头报cv::cvtColor!_src.empty()错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm运行OpenCV调用摄像头报cv::cvtColor!_src.empty()错误如何解决

报错原因
  • 核心报错!_src.empty()是因为没有成功读取到摄像头画面,传入cv2.imshow的img为空值。触发原因绝大多数是cv2.VideoCapture传入的摄像头设备号错误,Windows设备默认自带摄像头的编号是0,代码中写1会在没有外接第二摄像头的情况下读取失败。
  • 代码逻辑存在缺陷:没有对cap.read()返回的成功状态success做校验,读取失败后仍直接传递空图像给显示接口,直接触发报错。
  • 伴随的警告是Windows平台下OpenCV默认调用MSMF视频驱动的兼容提示,不影响核心功能,可通过参数消除。
  • 额外的逻辑错误:退出条件中错误使用了逻辑运算符and,应该用位运算符&匹配按键码,会导致按q无法正常退出程序。
修复方案
  1. 修改摄像头初始化参数,替换设备号为默认值0,同时添加驱动适配参数消除警告:
    将原代码的
    cap = cv2.VideoCapture(1)
    替换为
    cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
    如果确认使用外接第二摄像头,可依次尝试设备号1、2直到能正常读取画面。
  2. 补充读取校验、修复退出逻辑、追加资源释放代码,修改后的完整循环逻辑如下:
while True:
    success, img = cap.read()
    # 仅读取成功时执行显示逻辑
    if success:
        cv2.imshow("Result", img)
    # 修复位运算判断逻辑
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
# 释放摄像头资源、销毁所有窗口
cap.release()
cv2.destroyAllWindows()
  1. 如修改后仍无法读取,检查Windows系统摄像头权限:进入「设置→隐私和安全性→摄像头」,打开「允许桌面应用访问摄像头」开关,确认PyCharm的访问权限未被限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 04:57:00