calcHist的使用
opencv提供了calcHist函数来计算图像直方图。
其中C++的函数原型如下:void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, OutputArray
hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=
false );
void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, SparseMat&
hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=
false );
参数解释:
arrays。输入的图像的指针,可以是多幅图像,所有的图像必须有同样的深度(CV_8U or CV_32F)。同时一副图像可以有多个channes。
narrays。输入的图像的个数。
channels。用来计算直方图的channes的数组。比如输入是2副图像,第一副图像有0,1,2共三个channel,第二幅图像只有0一个channel,
那么输入就一共有4个channes,如果int channels[3] = {3, 2, 0},那么就表示是使用第二副图像的第一个通道和第一副图像的第2和第0个通道来计
算直方图。
mask。掩码。如果mask不为空,那么它必须是一个8位(CV_8U)的数组,并且它的大小的和arrays[i]的大小相同,值为1的点将用来计算
直方图。
hist。计算出来的直方图
dims。计算出来的直方图的维数。
histSize。在每一维上直方图的个数。简单把直方图看作一个一个的竖条的话,就是每一维上竖条的个数。
ranges。用来进行统计的范围。比如
float rang1[] = {0, 20};
float rang2[] = {30, 40};
const float *rangs[] = {rang1, rang2};那么就是对0,20和30,40范围的值进行统计。
uniform。每一个竖条的宽度是否相等。
accumulate。Accumulation flag. If it is set, the histogram is not cleared in the beginning
when it is allocated. This feature enables you to compute a single histogram from several
sets of arrays, or to update the histogram in time. 是否累加。如果为true,在下次计算的时候不会首先清空hist。这个地方我是这样理解的,不知道有没有错,
请高手指点。
一段示例代码:
//生成一幅单通道图像。
cv::Mat image(imageHeight, imageWidth, CV_8U, imageAddress);cv::MatND histogram;
//256个,范围是0,255.
const int histSize = 256;float range[] = {0, 255};const float *ranges[] = {range};const int channels = 0;cv::calcHist(image, 1, &channels, cv::Mat(), histogram, 1, &histSize, &ranges[0], true, false);int row = histogram.rows;int col = histogram.cols;float *h = (float*)histogram.data;double hh[256];if (h) {for (int i = 0; i < 256; ++i) {hh[i] = h[i];}
}
calcHist的使用相关推荐
- 【Opencv】直方图函数 calchist()
calchist函数需要包含头文件 #include <opencv2/imgproc/imgproc.hpp> 函数声明(三个重载 calchist函数): //! computes t ...
- 使用Python,OpenCV计算图像直方图(cv2.calcHist)
使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...
- OpenCV calcHist()创建直方图的实例(附完整代码)
OpenCV calcHist创建直方图的实例 OpenCV calcHist()创建直方图的实例 OpenCV calcHist()创建直方图的实例 #include "opencv2/c ...
- openCV calcHist函数的使用
本文转自:http://blog.csdn.net/sydnash/article/details/7451039 opencv提供了calcHist函数来计算图像直方图. 其中C++的函数原型 ...
- 【opencv学习笔记】025之直方图计算 - calcHist函数详解
前言 如果你想了解更多有关于计算机视觉.OpenCV.机器学习.深度学习等相关技术的内容,想与更多大佬一起沟通,那就扫描下方二维码加入我们吧! 1.calcHist函数是干什么滴? 这个问题嘛,看看标 ...
- OpenCV的calcHist
最近要计算图像的直方图,发现calcHist中的参数不是那么的一目了然,到网上搜了一下,资源还是比较多. http://blog.csdn.net/ljbsdu/article/details/741 ...
- OpenCV深入学习(6)--直方图之calcHist使用(补)
上次对calcHist的参数进行了分析,并且给出了几个例子,但是对channels参数没搞清楚,今天又写了个例子分析了一下,终于弄明白了. calcHist函数的channels参数和narrays以 ...
- 【Opencv】【C++】 Opencv之calcHist() 计算直方图
OpenCV 2.4.13 calcHist 通过图像计算直方图 函数声明如下: void calcHist( const Mat* images, int nimages,const int* ch ...
- 神奇。cv2.calcHist()函数返回值,灰度值为255的像素个数看似为0。
cv2.calcHist()函数返回值,灰度值为255的像素个数看似为0的细节探究. import cv2 import matplotlib.pyplot as plt import numpy a ...
最新文章
- 为什么老外不愿意用MyBatis?
- java-结合c3p0封装的db 事务 类
- 查看平台内核信息脚本
- 自己动手写C语言编译器(暂停)
- 深入浅出FSUIPC的作用以及使用方法
- Linux中chown和chmod的区别和用法
- 华为可以升级鸿蒙的机型,首批升级鸿蒙机型提前泄露,华为这保密措施需要加强...
- office表格怎么冻结前两行_「excel冻结前两行」excel2013怎么冻结前两行 - seo实验室...
- 如何通过 User-Agent 识别百度蜘蛛
- 联想小新固态硬盘安装Win7或者win10过程
- android开发 页面关闭时,关闭软键盘
- 重发布,路由策略实验
- 两台虚拟机互相ping通(互相通讯)
- Ubuntu16.04发热 CPU/GPU温度比win10高解决方法
- 大众 mib android auto,【图】加入互联基因 体验大众第二代MIB多媒体_汽车之家
- 30 岁了, 现在开始努力,晚吗?
- 电影挖掘机 搜索各大视频网站API接口 自动搜索全网所有电影
- 一个新开端,存储服务器再添骨灰级玩家
- 【华为2021校招】笔试题【通用硬件】
- 课程设计c语言拼写字母,C语言课程设计电子英汉词典.doc
热门文章
- 使用pngquant压缩png图片
- 2021消防设施操作员(中级)岗位考试真题安全检查知识部分
- C语言实现3个数的最小公倍数和最大公约数
- 优先级翻转与优先级继承
- Linux 1.debain 忘记root密码(修改root密码)2.debian 默认不允许 root 登录 解决办法 3.终端快捷键的设置 (超级详细)
- AWS Academy 学习平台建立 Learner Lab - 教师
- html5手机移动端三级联动城市选择器,jquery移动端省市县(区)三级联动插件
- mysql跨库oracle查询_ORACLE跨数据库查询的方法
- For循环语句及使用
- keras深度学习安装全过程(2021-08-03)