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

如何用Python生成两个二进制掩码的中间平均掩码?

解决二值掩码平均生成中间掩码的问题

你的代码有两个核心问题导致结果不符合预期:

  1. 读取方式错误:cv2.imread默认读取彩色三通道图像,而二值掩码是单通道灰度图,多通道的平均计算会干扰结果。
  2. 数据类型未转换:np.mean计算后输出的是浮点型数组,直接传入cv2.threshold会因类型不匹配导致异常处理,最终结果出错。

修正后的代码

import cv2
import numpy as np

# 以灰度模式读取二值掩码(单通道)
current_im = cv2.imread('ENGR1.png', cv2.IMREAD_GRAYSCALE)
new_im = cv2.imread('k9TFi.png', cv2.IMREAD_GRAYSCALE)

# 计算像素级均值,保持浮点型避免精度丢失
middle_im = np.mean([current_im, new_im], axis=0)
# 转换为8位无符号整数(cv2处理图像的标准类型)
middle_im = middle_im.astype(np.uint8)
# 阈值处理:均值≥127时设为255(白色),否则0(黑色)
_, middle_im = cv2.threshold(middle_im, 127, 255, cv2.THRESH_BINARY)

# 保存或查看结果
cv2.imwrite('middle_mask.png', middle_im)
cv2.imshow('Middle Mask', middle_im)
cv2.waitKey(0)
cv2.destroyAllWindows()

额外说明

如果你的二值掩码是基于0/1的(而非0/255),只需调整阈值参数为0.5,并在读取后做归一化处理即可。核心逻辑始终是单通道读取→浮点均值计算→类型转换→二值化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:42:46