📜  在Python中使用直方图可视化图像中的颜色

📅  最后修改于: 2022-05-13 01:54:45.212000             🧑  作者: Mango

在Python中使用直方图可视化图像中的颜色

在本文中,我们将讨论如何在Python中使用直方图来可视化图像中的颜色。

图像由各种颜色组成,我们知道任何颜色都是红、绿、蓝的组合。所以图像由红色、绿色、蓝色组成。因此,使用直方图,我们可以可视化图片中 RGB 颜色的比例。

直方图实际上提供了图像中各种颜色出现的频率,而不是图像中颜色的位置。要可视化图像中的颜色,我们需要按照以下步骤操作 -

逐步实施

第 1 步:导入必要的模块

对于这个概念,我们主要需要 2 个模块。

  • cv2 -用于加载图像并从图像中获取 RGB 数据。
  • matplotlib -用于绘制直方图。

第 2 步:加载图像

要加载图像,我们需要使用 cv2 模块中的 imread() 方法。它接受图像名称作为参数。

句法 :

第 3 步:从图像中获取 RGB 数据

为了从图像中获取 RGB 颜色,cv2 模块提供了 calchist 方法,该方法接受图像对象、获取特定颜色的通道、掩码、直方图大小和范围。

句法:

参数:

  • imageObject-加载图像的变量名称。
  • channelValue -它接受 0,1,2 值。它可以帮助我们获得所需的颜色。
  • 0 表示蓝色,1 表示红色,2 表示绿色。

第 4 步:绘制直方图

matplotlib 提供了 hist 方法,用于在指定数据上绘制直方图。

句法:

示例

按照上述步骤,首先导入所需的模块,然后我们使用 imread() 方法加载图像,并使用 calcHist() 方法从 Image 中获取 RGB 颜色,然后使用 RGB 数据绘制直方图。

Python3
# import necessary packages
import cv2
import matplotlib.pyplot as plt
 
# load image
imageObj = cv2.imread('SampleGFG.jpg')
# to avoid grid lines
plt.axis("off")
plt.title("Original Image")
plt.imshow(cv2.cvtColor(imageObj, cv2.COLOR_BGR2RGB))
plt.show()
 
# Get RGB data from image
blue_color = cv2.calcHist([imageObj], [0], None, [256], [0, 256])
red_color = cv2.calcHist([imageObj], [1], None, [256], [0, 256])
green_color = cv2.calcHist([imageObj], [2], None, [256], [0, 256])
 
# Separate Histograms for each color
plt.subplot(3, 1, 1)
plt.title("histogram of Blue")
plt.hist(blue_color, color="blue")
 
plt.subplot(3, 1, 2)
plt.title("histogram of Green")
plt.hist(green_color, color="green")
 
plt.subplot(3, 1, 3)
plt.title("histogram of Red")
plt.hist(red_color, color="red")
 
# for clear view
plt.tight_layout()
plt.show()
 
# combined histogram
plt.title("Histogram of all RGB Colors")
plt.hist(blue_color, color="blue")
plt.hist(green_color, color="green")
plt.hist(red_color, color="red")
plt.show()


输出