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

OpenCV调用cvtColor报(-215:Assertion failed)!_src.empty()错误求助

错误原因
  • 报错信息中的!_src.empty() in function 'cvtColor'表示OpenCV执行颜色转换时输入的源图像为空,不存在有效数据
  • 导致图像为空的直接原因是代码中路径拼接错误:curImg = cv2.imread(f"{path} / {cl}") 这行代码在路径和文件名之间额外添加了空格,生成的文件路径与实际存储路径不匹配,cv2.imread读取不存在的路径时会静默返回None而非抛出异常,后续对空对象执行颜色转换就触发了报错。
解决方案
  1. 修正路径拼接逻辑,优先使用os.path.join实现跨平台的路径拼接,避免手动写分隔符时出现符号、空格错误:
    将原代码中的
curImg = cv2.imread(f"{path} / {cl}")

替换为:

curImg = cv2.imread(os.path.join(path, cl))
  1. 增加图像读取校验逻辑,提前拦截读取失败的情况,避免后续处理异常:
for cl in myList:
    curImg = cv2.imread(os.path.join(path, cl))
    # 新增读取校验
    if curImg is None:
        print(f"读取文件{cl}失败,请检查文件是否存在")
        continue
    images.append(curImg)
    classNames.append(os.path.splitext(cl)[0])
  1. 可选优化:后续调用face_recognition.face_encodings时可增加返回结果长度校验,避免图片中没有人脸导致的索引报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:57:04