我希望能够计算图像一部分的颜色数量
我考虑的一种方法是绘制灰度图像的直方图,然后计算峰值的数量,这就是颜色的数量
histogram, bin_edges = np.histogram(gray_image, bins = 256, range=(0,1))
plt.plot(histogram)
peaks = signal.find_peaks_cwt(histogram, 10)
当我这样做时,signal.find_peaks_cwt表示数组的索引太多
我该怎么做,或者有没有更好的方法来计算颜色的数量
Tags:
这个答案让人有点想发表评论:
我不太清楚你想做什么。您是要计算图像中所有可分辨元素的数量,还是要将所有阴影(例如红色)计算为一种颜色
还可以使用不同类型的数据类型来表示图像(例如
float
∈ [-1,1]或uint8
∈ [0, 255]). 在第一行中,您显然希望根据range=(0,1)
得到一个float类型的图像。 通过装箱,您可能会丢失有关可分辨元素的信息,因此无法计算可分辨元素的数量可分辨颜色计数
要计算灰度图像中的所有可用颜色(=可分辨元素),可以使用以下一行。(这当然也适用于
float
图像。如果您真的想区分每种颜色,这是完美的,但如果不是,您的命令np.histogram
是个好主意。)至于} 需要一个1D数组作为第二个参数。如果您提供一个numpy数组,它就可以正常工作
scipy.signal.find_peaks_cwt(histogram, 10)
的错误,^{计算相似颜色的簇
如果您想对相似的颜色进行聚类,而不是对它们进行两次计数,则可以选择不同的方法。这里的关键词是“颜色量化”。 如图this post所示,您可以使用聚类算法对图像中使用的颜色进行量化。 在颜色量化之后,您可以简单地重塑图像以保留RGB元组,并使用如下numpys
unique
方法:有很多方法可以减少颜色的数量。枕头有两个功能} 。我在前面提到的帖子中展示了一个使用Scikit learn的k-means方法,在使用预定义的颜色集时,您还可以尝试使用距离度量
posterize
和^{相关问题 更多 >
编程相关推荐