OpenCV 2 学习笔记(15): 绘制图像直方图

本文介绍了如何使用OpenCV的cv::calcHist函数计算图像直方图,探讨了直方图的用途,包括图像信息的获取、纹理检测等。通过示例解释了函数参数,特别是mask、ranges和accumulate的作用。直方图可用于图像分割,如通过阈值处理将图像分为前景和背景。文章还讨论了处理彩色图像时的不同直方图计算方式。
摘要由CSDN通过智能技术生成

代码见:http://download.csdn.net/detail/u010525655/6196983


图像由许多的像素组成。这些像素的分布和值包含了图像的许多重要的信息。利用这些信息我们可以计算出图像的直方图,并且去改善图片的效果,检测图像的纹理等。下面我们就来看一下怎么得到图像的直方图。

直方图给出了相同灰度值的像素个数。灰度图的直方图基本上有256个坐标点。0点给出了图像中所有灰度值为0的像素的个数等等依次类推。算出所有坐标值的和,也就得到了总的像素数。直方图也可以被规范化,也就是说坐标值的和为1,也就是说每个坐标的值是所占像素总个数的百分比。

OpenCV计算直方图使用cv::calcHis函数。他可以计算多个信道的各种图像类型的直方图。让我们来写一个类来更方便的使用它。

先让我们了解一下cv::calcHist:

void calcHist(const Mat*images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** ranges, booluniform=true, boolaccu-mulate=false)

images – Source arrays. They all should have the same depth,CV_8UorCV_32F, and thesame size. Each of them can have an arbitrary number of channels.
nimages– Number of source images.
channels – List of the dims channels used to compute the histogram. The first ar-ray channels are numerated from 0 to images[0].channels()-1 , the second ar-raychannels are counted from images[0].channels() to images[0].channels() +images[1].channels()-1, and so on.

mask– Optional mask. If the matrix is not empty, it must be an 8-bit array of the same size as images[i]. The

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值