OpenCV2编程手册笔记之 4.2计算图像的直方图(彩色)

1.简介

    上一节中我们计算了灰度图像的直方图。这次,我们尝试对彩色图像进行直方图求解。

    同样地,我们定义一个视频处理类ColorHistogram,内部的成员变量与灰度图像的直方图略有不同:

int histSize[3];            //项(容器)的数量
float hranges[2];            //像素最小值最大值
const float* ranges[3];        //像素的范围,这其实是一个二维指针
int channels[3];            //彩色图片三通道

    同时,我们为这些成员变量进行赋值:

histSize[0] = histSize[1] = histSize[2] = 256;
hranges[0] = 0.0;
hranges[1] = 255.0;
ranges[0] = hranges;
ranges[1] = hranges;
ranges[2] = hranges;
channels[0] = 0;
channels[1] = 1;
channels[2] = 2;

    在这之后,我们同样定义一个计算直方图的方法getHistogram,以得到整个图像的数据,处理方法和灰度图像类似。

cv::MatND ColorHistogram::getHistogram(const cv::Mat &image)
{
	cv::MatND hist;
	cv::calcHist(&image, 1, channels, cv::Mat(), hist, 3, histSize, ranges);
	return hist;
}
    这段代码中,返回的是一个三维的 cv::Mat 实例。这个矩阵有(256)*3的元素,是一个比较大型的矩阵。

源代码:


对于直方图形式显示出图片,我会在后续中进行补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值