如何找到图像中最常见的RGBA像素值?

问题描述

我有一只狗的图像,它的形状为# A tibble: 9 x 5 # Groups: names,category,days [9] days names numbers category rolling <fct> <fct> <dbl> <fct> <dbl> 1 1 cali 4 kingdom NA 2 2 bong 3 democratic NA 3 3 bong 3 democratic NA 4 4 cali 1 kingdom NA 5 5 neva 4 democratic NA 6 6 cali 4 democratic NA 7 7 neva 2 kingdom NA 8 8 neva 2 kingdom NA 9 9 bong 5 democratic NA ndarray中的第3维包含每个像素的RGBA值。我想找出最常见的像素是什么,即模式。

对于二维数组,我可以使用以下行:(432,575,4)

但是,我不知道如何只比较3d数组的第3维中的向量。这个问题类似,但是仅适用于二维数组:Finding the most common subarray within a numpy array。如果我只是将np.unique(a,axis=0,return_counts=True)更改为“ = 1”,那么它并不能满足我的需要。

解决方法

由于您不关心图像的形状,因此可以使用reshape来平坦化图像并使用链接的答案:

rgba,counts = np.unique(a.reshape(-1,4),axis=0,return_counts=True)

# the mode here
rgba[np.argmax(counts)]