前言
想查看打印出分割图像的Mask里面有多少个不同的数值。
步骤
要查询一个三维 Numpy 数组(表示 RGB 图像)中的不同 RGB 点,并打印出它们,您可以遵循以下步骤:
- 展开 RGB 值:将三维数组转换为一维数组,以便对每个像素点的 RGB 值进行单独处理。
- 使用集合(set)去重:将展开后的 RGB值放入一个 Python 集合中,自动去除重复项。
- 打印不同 RGB 点:遍历集合,打印出每个不同的 RGB 点
具体代码
import numpy as np # 假设您有一个三维 Numpy 数组,代表 RGB 图像 rgb_image = np.random.randint(0, 256, size=(height, width, 3), dtype=np.uint8) # Step 1: 展开 RGB 值 flat_rgb_values = rgb_image.reshape(-1, 3) # Step 2: 使用集合去重 unique_rgb_values = set(tuple(rgb) for rgb in flat_rgb_values) # Step 3: 打印不同 RGB 点 for rgb in unique_rgb_values: print(f"{rgb}: ({rgb[0]}, {rgb[1]}, {rgb[2]})
打印结果:
(0, 0, 128), (0, 0, 0), (0, 128, 0), (0, 128, 128)
代码解释如下:
这段代码首先创建一个随机生成的 RGB 图像作为示例。接着,使用 reshape(-1, 3) 将三维数组展平为二维数组,每一行代表一个像素点的 RGB 值。然后,将这些 RGB 值转换为元组,并放入一个集合中进行去重。最后,遍历集合并打印出每个唯一的 RGB 点。
注意,这里使用 tuple(rgb) 将 Numpy 数组的每一行(即一个 RGB 值)转换为元组,因为集合要求元素可哈希,而 Numpy 数组本身不可哈希。此外,打印时使用 f-string 格式化输出,使得结果更易读。