numpy:图像中唯一的颜色列表

wal*_*mat 8 python numpy

我有一张图片img:

>>> img.shape
(200, 200, 3)
Run Code Online (Sandbox Code Playgroud)

在像素(100,100)上我有一个很好的颜色:

>>> img[100,100]
array([ 0.90980393,  0.27450982,  0.27450982], dtype=float32)
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:这张图片中有多少种不同的颜色,我该如何枚举它们?

我的第一个想法是numpy.unique(),但不知怎的,我正在使用这个错误.

Mak*_*nko 22

您最初使用的想法numpy.unique()实际上可以完美地完成最佳性能:

numpy.unique(img.reshape(-1, img.shape[2]), axis=0)
Run Code Online (Sandbox Code Playgroud)

首先,我们展平矩阵的行和列.现在,矩阵的行数与图像中的像素数一样多.列是每个像素的颜色分量.

然后我们计算独特的扁平矩阵行.


usu*_* me 5

你可以这样做:

set( tuple(v) for m2d in img for v in m2d )
Run Code Online (Sandbox Code Playgroud)