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

使用OpenCV adaptiveThreshold遇blockSize断言错误,设为11仍报错求助

问题原因与解决方案

你的核心问题是**adaptiveThreshold函数的参数顺序完全错误**,混淆了它和普通cv.threshold函数的参数结构,导致实际传入blockSize的不是你设置的11,而是不符合要求的值,触发了断言错误。

具体分析

OpenCV中adaptiveThreshold的Python参数顺序为:

cv.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

它不需要全局阈值参数(也就是你代码里的treshold = 115),但你错误地将这个值作为第二个参数传入,导致后续参数全部错位:

  • 原本应传给maxValue的位置,你传了treshold
  • 原本应传给adaptiveMethod的位置,你传了maxValue
  • 以此类推,最终blockSize的位置被传入了thresholdType的值(比如cv.THRESH_BINARY对应数值0),这显然不满足“大于1的奇数”要求。

修正后的代码

删除多余的treshold变量,调整参数顺序:

maxValue = 255 
adaptiveMethod = cv.ADAPTIVE_THRESH_GAUSSIAN_C
thresholdType = cv.THRESH_BINARY
blockSize = 11
C = 2
            
# 修正参数顺序
im = cv.adaptiveThreshold(img, maxValue, adaptiveMethod, thresholdType, blockSize, C)
            
plt.imsave(save_path, im, cmap='gray')

额外检查点

如果调整后仍报错,确认:

  • 输入图像img是8位单通道灰度图,adaptiveThreshold不支持彩色或多通道图像
  • 确保blockSize小于输入图像的宽高(极端情况如果图像尺寸小于blockSize也会触发错误,但你的情况大概率是参数顺序问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:01:19