首页 > 解决方案 > 如何从图像文件转换 > numpy 数组 > 单一 RGB 颜色的 x/y 坐标列表

问题描述

在此处输入图像描述

从上面的 2x2 像素图像创建一个 numpy 数组(为清晰起见放大):

import numpy as np
from PIL import Image

img = Image.open('2x2.png')
pixels = np.array(img)

数组如下所示,每个像素由其各自的 [R, G, B] 值表示:

>>> pixels
array([[[255,   0,   0],
        [  0, 255,   0]],

       [[  0,   0, 255],
        [255,   0,   0]]], dtype=uint8)

现在我需要生成一个“所有红色像素”的 x/y 坐标数组,因此所有数组元素都带有 value [255, 0, 0]。生成的所需坐标数组如下所示:

array([[ 0,  0],
       [ 1,  1 ]])

实现这一目标的最佳方法是什么?

标签: pythonarraysnumpy

解决方案


你可以试试:

temp = (pixels == [255,0,0]).all(axis=-1)
# [[ True False]
#  [False  True]]
result = np.asarray(np.where(temp)).T
print(result)

# print
# [[0 0]
#  [1 1]]

推荐阅读