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

OpenCV调用cv2.threshold触发tuple index out of range报错

错误原因
  • cv2.threshold() 方法固定返回长度为2的元组:第一个元素是函数计算出的实际阈值,第二个元素是阈值处理后的输出图像,不存在索引为2的第三个元素,直接取[2]必然触发tuple index out of range报错。
  • 代码还存在一处隐藏的变量名错误:读取图像时赋值的变量是image,但灰度转换步骤传入的是未定义的img1,就算修复了索引问题,这行也会触发变量不存在的报错。
修复方法

修改两处问题即可:

  1. 将阈值结果的取值索引从[2]改为[1],拿到二值化处理后的图像
  2. 统一变量名,把灰度转换时传入的img1替换为实际存储读入图像的image变量

修正后的对应代码段:

image = cv2.imread(path)
blurred1 = cv2.GaussianBlur(image, (21,21), 0)
blurmask = np.zeros(image.shape[:2], dtype="uint8")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2_imshow(gray)
thresh = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)[1]

补充:即使用大津法、三角法等自动计算阈值的阈值类型,cv2.threshold()的返回结构依然是(计算所得阈值, 输出图像),固定取索引1就能拿到处理后的图像结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:30:52