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

如何使用PIL等库交换图像中的蓝色与黄色颜色值?

仅交换图像中黄色与蓝色的实现方案

可以用你已导入的PIL和numpy实现这个需求,核心思路是通过像素掩码识别黄色、蓝色区域,再交换对应颜色值。具体实现如下:

代码示例

# 打开目标图像(替换为你的图像路径)
img = Image.open("your_image.jpg").convert("RGB")
# 转成numpy数组方便像素级操作
img_np = np.array(img)

# 定义黄、蓝色的RGB识别阈值(可根据图像实际颜色调整)
# 黄色:红、绿通道值偏高,蓝通道值偏低
yellow_mask = (img_np[..., 0] > 200) & (img_np[..., 1] > 200) & (img_np[..., 2] < 50)
# 蓝色:蓝通道值偏高,红、绿通道值偏低
blue_mask = (img_np[..., 2] > 200) & (img_np[..., 0] < 50) & (img_np[..., 1] < 50)

# 先备份两类像素的颜色值,避免替换时覆盖丢失
yellow_pixels = img_np[yellow_mask].copy()
blue_pixels = img_np[blue_mask].copy()

# 交换颜色
img_np[yellow_mask] = blue_pixels
img_np[blue_mask] = yellow_pixels

# 转回PIL图像并显示
result_img = Image.fromarray(img_np)
plt.figure()
plt.imshow(result_img)
plt.axis('off')
plt.show()

关键说明

  • 阈值可灵活调整:如果图像中的黄/蓝色不是纯色调,可修改代码中的数值(如200、50)来匹配实际像素的RGB范围。
  • 通道顺序注意:PIL转numpy数组后,通道顺序为(高度, 宽度, RGB),对应索引0=红、1=绿、2=蓝。
  • 必须先拷贝像素值:直接替换会导致原颜色被覆盖无法恢复,所以要先备份两类像素的颜色数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:30:51