首页 > 解决方案 > 如何从图片中的每个 rgb 通道获取直方图?

问题描述

我在 Lena 测试图片上尝试了一些东西,其中之一是独立绘制每个 rgb 直方图,但由于某种原因它不起作用。

这是我的代码:

from skimage import io, color
import matplotlib.pyplot as plt

# Charger l'image Lena
X = io.imread('lena.png')
fig, (ax0, ax1,ax2) = plt.subplots(1, 3)
rgb=[]
for i in range(3):
    rgb.append(X[:,:,i])
ax0.imshow(plt.hist(rgb[0]))
ax1.imshow(plt.hist(rgb[1]))
ax2.imshow(plt.hist(rgb[2]))

标签: python

解决方案


关于您的解决方案,您ply.show()最后错过了。

您还可以使用以下方法执行以下操作open-cv

import cv2
import matplotlib.pyplot as plt
image = cv2.imread('lena.jpg')
for i, col in enumerate(['b', 'g', 'r']):
    hist = cv2.calcHist([image], [i], None, [256], [0, 256])
    plt.plot(hist, color = col)
    plt.xlim([0, 256])
    
plt.show()

这会将直方图绘制为彼此重叠的连续线,用不同的颜色表示每个通道,但您可以使用相同的逻辑来分隔图并显示离散直方图。


推荐阅读