• OpenCV自学笔记十六:直方图处理


    OpenCV中,直方图(Histogram)是用于表示图像中像素强度分布的一种统计工具。它可以帮助我们了解图像的亮度、对比度、色彩分布等信息。

    OpenCV提供了一个函数`cv2.calcHist()`,用于计算图像的直方图。该函数接受图像数组和一些参数,例如要计算的通道数、区间的数量等。它返回一个表示直方图的一维数组。

    OpenCV中的直方图可以有不同类型,包括灰度直方图和彩色直方图。

    1. 灰度直方图:对于灰度图像,直方图显示了每个像素强度值(0-255范围内)的频数或频率。它可以帮助我们了解图像中不同强度级别的像素数量,并根据直方图的形状来判断图像的亮度分布。

    2. 彩色直方图:对于彩色图像,直方图显示了每个通道(如红色、绿色、蓝色)的像素强度值的频数或频率。它可以帮助我们理解图像中不同颜色通道的分布情况。

    通过分析直方图,我们可以获得以下信息:

    - 对比度:直方图的峰值和分布范围可以提供关于图像对比度的信息。例如,峰值较集中的直方图可能表示高对比度图像,而峰值分布较宽的直方图可能表示低对比度图像。

    - 亮度:灰度直方图可以显示图像中不同亮度级别的像素数量,从而帮助我们判断图像的明暗程度。

    - 色彩分布:彩色直方图可以显示图像中不同颜色通道的像素数量,从而帮助我们了解图像的色彩分布情况。

    通过OpenCV中的直方图计算函数,我们可以方便地获取图像的直方图并进行进一步的图像处理、分析和视觉化。以下是一个使用OpenCV计算灰度图像直方图的示例代码:
     

    1. import cv2
    2. import numpy as np
    3. import matplotlib.pyplot as plt
    4. # 读取图像并转换为灰度图像
    5. image = cv2.imread("image.jpg")
    6. gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    7. # 计算直方图
    8. hist = cv2.calcHist([gray], [0], None, [256], [0, 256])
    9. # 绘制直方图
    10. plt.plot(hist)
    11. plt.title('Grayscale Histogram')
    12. plt.xlabel('Pixel Value')
    13. plt.ylabel('Frequency')
    14. plt.show()

    在上述示例中,首先使用`cv2.imread()`函数读取图像,并使用`cv2.cvtColor()`函数将其转换为灰度图像。

    然后,我们使用`cv2.calcHist()`函数计算灰度图像的直方图。该函数接受多个参数,包括要计算的图像、通道数、掩码等。在这里,我们只计算单通道的直方图(灰度图像),因此将通道数设置为[0]。

    `calcHist()`函数还可以指定区间数量和范围。在本例中,我们将区间数量设置为256,表示将图像像素值划分为256个区间。范围设为[0, 256],表示像素值的范围为0到255。

    最后,我们使用Matplotlib库的`plot()`函数绘制直方图,并使用`title()`、`xlabel()`和`ylabel()`函数添加标题和坐标轴标签。最后,通过调用`show()`函数显示直方图。

  • 相关阅读:
    【笔记】使用OrCAD对电路进行优化
    OFD板式文件创建JAVA工具-EASYOFD 七、 电子签章及验签 Seal
    全向移动机器人运动参数校准
    使用Keras的面部表情识别
    RK3399平台开发系列讲解(内核调试篇)IO 数据工具:iostat和iotop
    【vue富文本插件】tinymce 安装使用及汉化注意项
    软件工程导论---概述软件工程
    秒懂双亲委派机制
    三步减少打包机故障
    一篇文章带你搞定所有二叉树题型的递归思维(思路超详细)
  • 原文地址:https://blog.csdn.net/m0_71721954/article/details/133145392