【拜小白opencv】44-灰度直方图(一维直方图)calcHist()函数、minMaxLoc()函数、normalize()函数

本文介绍了OpenCV中计算直方图的calcHist函数,详细解析了函数参数及直方图的概念,通过实例展示了如何使用直方图进行图像分析,包括minMaxLoc和normalize函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常言道“温故而知新”,写此文章就是对自己目前学习内容的小小的总结与记录。

本文力求用最简洁的语言,详细的代码将此部分内容讲解清楚,但由于博主同样是刚刚接触OpenCV,或许表达上有些瑕疵,还望读者能够指教探讨,大家共同进步。

博主机器配置为:VS2013+opencv2.4.13+Win-64bit。

若本文能给读者带来一点点启示与帮助,我就很开心了。

====================分割线====================


直方图的定义

直方图(Histogram)又称柱状图、质量分布图,是一种统计报告图。直方图由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。在图像处理上,直方图是图像信息统计的有力工具。其实也就是统计一幅图某个亮度像素数量

1-换个角度认识图像(直方图)

第一个就是当我们面对图像的时候,我们面对的是抽象的矩阵,如下图,下面是0-255的灰度图像的表示,密密麻麻的。

OpenCV中,`calcHist()` 函数是一个非常实用的功能,用于计算图像的颜色、灰度或其他特征的直方图直方图可以帮助我们了解像素值分布的情况,例如,颜色图像通常有三个通道(BGR或RGB),而灰度图像只有一个通道。 当你想要计算一维直方图时,你需要提供的参数包括输入图像、需要统计的每个通道(对于彩色图像通常是每个通道,如B, G, R)、直方图的bins数目以及是否归一化等。例如: ```python import cv2 import numpy as np # 加载图像 image = cv2.imread('image.jpg', cv2.IMREAD_COLOR) # 分别获取每个通道的灰度图像 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) b_channel = image[:, :, 0] g_channel = image[:, :, 1] r_channel = image[:, :, 2] # 计算一维直方图 hist_b = cv2.calcHist([b_channel], [0], None, [256], [0, 256]) hist_g = cv2.calcHist([g_channel], [0], None, [256], [0, 256]) hist_r = cv2.calcHist([r_channel], [0], None, [256], [0, 256]) # 归一化直方图 cv2.normalize(hist_b, hist_b, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX) cv2.normalize(hist_g, hist_g, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX) cv2.normalize(hist_r, hist_r, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX) # 显示直方图 cv2.imshow("Blue Channel Histogram", hist_b) cv2.imshow("Green Channel Histogram", hist_g) cv2.imshow("Red Channel Histogram", hist_r) ``` 对于二维直方图,如果你要分析的是两个通道之间的关系,比如亮度和色相,可以同时传递两个通道作为参数。注意,`calcHist()` 的语法会略有不同,因为需要指定两个或更多的channel indices。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值