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

OpenCV MatchTemplate调整匹配图像大小时报(-215)断言错误如何解决

错误原因

你混淆了OpenCV的两类参数:

  • cv.IMREAD_* 系列常量是cv.imread()方法专属的读取配置参数,不能传入cv.cvtColor()作为颜色空间转换规则
  • 你在对截图转灰度时传入了非法参数cv.IMREAD_GRAYSCALE,导致输出的haystack图像格式异常,不满足模板匹配的格式要求

修改方案

  1. 截图转灰度的代码行替换为正确的颜色转换常量,由于ImageGrab.grab()返回的PIL图像默认是RGB通道顺序,转灰度应使用cv.COLOR_RGB2GRAY:
# 错误写法
# haystack = cv.cvtColor(haystack_img_np, cv.IMREAD_GRAYSCALE)
# 正确写法
haystack = cv.cvtColor(haystack_img_np, cv.COLOR_RGB2GRAY)
  1. 模板读取的修改是正确的,无需调整:
ship_img = cv.imread(img, cv.IMREAD_REDUCED_GRAYSCALE_2)

可选调试手段

你可以在匹配前加两行代码确认格式一致性,避免后续类似问题:

print(f"待匹配图参数:维度{haystack.shape}, 类型{haystack.dtype}")
print(f"模板图参数:维度{needle_img.shape}, 类型{needle_img.dtype}")

正常情况下两者的dtype都应为uint8,且都为单通道二维数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:36:03