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

Python如何将二值图的白色像素替换为对应RGB图像的像素值

Python实现二值图白色位置替换为RGB图对应像素的方案

以下提供两种常用图像处理库的实现方式,默认二值图白色取值为255、黑色取值为0,可根据实际情况调整阈值。

方法1:基于OpenCV实现

先安装依赖:
pip install opencv-python numpy
实现代码:

import cv2
import numpy as np

# 读取图像:二值图按灰度模式读取,RGB图按彩色模式读取
binary_img = cv2.imread("你的二值图路径.png", cv2.IMREAD_GRAYSCALE)
rgb_img = cv2.imread("你的RGB图路径.png", cv2.IMREAD_COLOR)

# 校验两张图尺寸匹配
assert binary_img.shape[:2] == rgb_img.shape[:2], "两张图像尺寸不一致,无法处理"

# 生成白色像素掩码:二值图中值为255的位置标记为True
white_mask = binary_img == 255

# 初始化结果图:先把单通道二值图转三通道,保证颜色维度一致
result = cv2.cvtColor(binary_img, cv2.COLOR_GRAY2BGR)
# 替换掩码位置的像素为RGB图对应值
result[white_mask] = rgb_img[white_mask]

# 保存输出结果
cv2.imwrite("输出结果路径.png", result)

说明:OpenCV默认读取彩色图为BGR顺序,如果需要RGB顺序输出,可在读取RGB图后新增一行rgb_img = cv2.cvtColor(rgb_img, cv2.COLOR_BGR2RGB)调整

方法2:基于Pillow实现

先安装依赖:
pip install pillow numpy
实现代码:

from PIL import Image
import numpy as np

# 读取图像:二值图转灰度模式,RGB图转彩色模式
binary_img = Image.open("你的二值图路径.png").convert("L")
rgb_img = Image.open("你的RGB图路径.png").convert("RGB")

# 校验两张图尺寸匹配
assert binary_img.size == rgb_img.size, "两张图像尺寸不一致,无法处理"

# 转为numpy数组处理
binary_arr = np.array(binary_img)
rgb_arr = np.array(rgb_img)

# 生成白色像素掩码
white_mask = binary_arr == 255

# 初始化结果数组:把单通道二值图堆叠为三通道
result_arr = np.stack([binary_arr]*3, axis=-1)
# 替换掩码位置的像素为RGB图对应值
result_arr[white_mask] = rgb_arr[white_mask]

# 转回Image对象保存
result_img = Image.fromarray(result_arr)
result_img.save("输出结果路径.png")

注意事项

  • 如果你的二值图白色取值不是255(比如部分标注工具生成的二值图白色值为1),把代码中== 255的判断条件改为对应白色取值即可
  • 两种方法均为像素级向量化操作,处理效率高,适合大尺寸图像场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:36:07