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

如何按指定条件叠加两个同形状的numpy数组(图像)?

用Numpy实现图像数组叠加的方案

核心逻辑:先识别arrayA中的黑色像素位置,将这些位置的像素值替换为arrayB的对应值,其余位置保留arrayA的原值。

步骤1:生成黑色像素掩码

RGB格式中黑色像素的三个通道值均为0,通过以下代码标记arrayA中黑色像素的位置:

import numpy as np

# 假设arrayA、arrayB为已加载的同shape numpy数组
black_mask = (arrayA == [0, 0, 0]).all(axis=2)

axis=2表示沿RGB通道维度做判断,确保三个通道同时为0才判定为黑色像素。

步骤2:生成目标数组arrayC

先复制arrayA作为基础,再将掩码标记的黑色位置替换为arrayB的对应像素:

arrayC = arrayA.copy()
arrayC[black_mask] = arrayB[black_mask]

这种基于numpy向量化操作的方式,比逐像素循环高效得多。

示例验证代码

如果需要快速测试逻辑,可手动构造测试数组:

# 构造2x2的测试数组
arrayA = np.array([
    [[255, 0, 0], [0, 0, 255]],  # 红色、蓝色
    [[0, 0, 0], [255, 0, 0]]     # 黑色、红色
])

arrayB = np.array([
    [[0, 255, 0], [255, 255, 0]],  # 绿色、黄色
    [[0, 255, 0], [255, 255, 0]]   # 绿色、黄色
])

# 执行替换逻辑
black_mask = (arrayA == [0, 0, 0]).all(axis=2)
arrayC = arrayA.copy()
arrayC[black_mask] = arrayB[black_mask]

print(arrayC)

运行后可见,arrayA中的黑色像素被替换为arrayB的绿色,红、蓝像素保持不变。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:11:01