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

OpenCV过滤图像红色时报错cv2.cvtColor(-215:Assertion failed)如何解决

报错根因

你遇到的cv2.error: (-215:Assertion failed)报错触发自cv2.cvtColor方法,本质是cv2.imread读取图片失败,返回了空值None,颜色空间转换接口拿到空输入后触发了内部断言校验失败。

修复步骤

  • 第一步新增图片读取校验逻辑,同时修正红色HSV阈值不合理的问题,修改后完整代码如下:
import cv2
import numpy as np

path = "C:\\Users\\MERYEM\\OneDrive\\Masaüstü\\scan\\Img_Data\\Chosen\\frame3802.jpg"
image = cv2.imread(path)
# 新增空值判断,避免空输入报错
if image is None:
    print(f"图片读取失败,请核对路径:{path}")
    exit()

hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# OpenCV中HSV的H通道取值为0-179,红色分为0-10、170-179两段,需合并两个阈值区间的掩码
lower_red1 = np.array([0, 120, 70])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([170, 120, 70])
upper_red2 = np.array([179, 255, 255])
mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
mask = mask1 + mask2

# 提取原图中的红色区域
red_result = cv2.bitwise_and(image, image, mask=mask)

cv2.imshow('Original Image', image)
cv2.imshow('Red Detection', red_result)

cv2.waitKey(0)
cv2.destroyAllWindows()
  • 如果运行后提示图片读取失败,优先排查路径问题:可以尝试将目标图片放到和代码同目录,改用相对路径path = "./frame3802.jpg"测试,确认路径中没有特殊字符、权限限制、目录拼写错误等问题。
  • 可以根据实际图片的红色深浅,调整阈值中S(饱和度)、V(明度)的下限值,优化检测效果。

内容的提问来源于stack exchange,提问作者Meryem Çiftçi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:48:03