gpt4 book ai didi

python - numpy图像中灰度值的直方图

转载 作者:太空狗 更新时间:2023-10-30 01:50:57 24 4
gpt4 key购买 nike

我将一张图像加载到一个 numpy 数组中,并想在直方图中绘制它的颜色值。

import numpy as np

from skimage import io
from skimage import color

img = io.imread('img.jpg')
img = color.rgb2gray(img)

unq = np.unique(img)
unq = np.sort(unq)

当我们检查 unq 的值时,我们会看到类似的东西

array([  5.65490196e-04,   8.33333333e-04,   1.13098039e-03, ...,
7.07550980e-01, 7.09225490e-01, 7.10073725e-01])

matplotlib 的值仍然太多,所以我的想法是遍历 unq 并删除所有仅偏离 x 的值前任。

dels = []

for i in range(1, len(unq)):
if abs(unq[i]-unq[i-1]) < 0.0003:
dels.append(i)

unq = np.delete(unq, dels)

虽然此方法有效,但效率非常低,因为它没有使用 numpy 的优化实现。

是否有 numpy 功能可以为我做这件事?

刚刚注意到我的算法丢失了有关颜色出现频率的信息。让我尝试解决此问题。

最佳答案

如果你只想计算直方图,你可以使用np.histogram :

bin_counts, bin_edges = np.histogram(img, bins, ...)

这里,bins 可以是 bin 的数量,也可以是指定 bin 上下边界的向量。

如果要绘制直方图,最简单的方法是使用 plt.hist :

bin_counts, bin_edges, patches = plt.hist(img.ravel(), bins, ...)

请注意,在计算直方图之前,我使用了 img.ravel() 来展平图像数组。如果您将二维数组传递给 plt.hist(),它会将每一行视为一个单独的数据系列,这不是您想要的。

关于python - numpy图像中灰度值的直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29864330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com