python - 如何从图像文件转换 > 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 ]])
实现这一目标的最佳方法是什么?
解决方案
你可以试试:
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]]