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

使用cv2.THRESH_OTSU阈值化时报错src_type为CV_8UC3求助

OpenCV THRESH_OTSU 报错解决方案

报错核心原因

THRESH_OTSU阈值算法仅支持单通道的灰度图像输入,你当前的region虽然已经转换为uint8类型,但属于3通道彩色图像(错误提示中的CV_8UC3后缀C3即代表3个通道),不满足算法的输入要求。

可行解决方法

方案1:转灰度图后阈值化(通用场景推荐)

先将3通道ROI区域转换为单通道灰度图,再执行OTSU阈值化,代码示例:

# 第一步:将3通道彩色ROI转为单通道灰度图,输出本身就是uint8类型
region_gray = cv2.cvtColor(region, cv2.COLOR_BGR2GRAY)
# 第二步:执行OTSU阈值化
region = cv2.threshold(region_gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

方案2:提取单通道后阈值化(特殊场景适用)

如果你的3通道图像三个通道的数值完全一致(如伪彩色生成场景),可以直接提取任意一个通道用于阈值化,计算效率更高:

# 提取B通道(OpenCV默认图像通道顺序为BGR)作为单通道输入
region_single_channel = region[:, :, 0]
# 执行OTSU阈值化
region = cv2.threshold(region_single_channel, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

有效性验证

转换完成后可执行print(region_single_channel.shape)验证:单通道图像的输出格式为(高度, 宽度),而非3通道的(高度, 宽度, 3),确认格式正确后即可正常执行阈值化操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:27:04