OpenCV2+入门系列(四):计算图像的直方图,平均灰度,灰度方差
2024-10-12 22:45:24
本篇懒得排版,直接在网页html编辑器编辑
在图像处理时,我们常常需要求出图像的直方图、灰度平均值、灰度的方差,这里给出一个opencv2+自带程序,实现这些功能。
直方图
对于直方图,使用cv::calcHist函数可以求出。
原型
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: 输入图像(或数组、数组集)
- narrays: 输入数组的个数
- channels: 需要统计的通道
- mask: 掩码( 0 表示忽略该像素), 如果未定义,则不使用掩码
- hist: 储存直方图的矩阵
- dims: 直方图维数
- histSize: 每个维度的bin数目
- ranges: 每个维度的取值范围
- uniform 和 accumulate: bin大小相同,清楚直方图痕迹
这里给出一个我封装好的计算直方图的方法
void GetGrayHist(cv::Mat& src, cv::Mat& grayHist, int histSize=)
{
float range[] = { , };
const float* histRange = { range };
bool uniform = true; bool accumulate = false;
(&src, , , cv::Mat(), grayHist, , &histSize, &histRange, uniform, accumulate);
}
平均值与方差
平均值与方差的计算使用cv::meanStdDev函数
该函数有四个输入参数
1Mat 图像
2Mat 平均值,计算后会变成Float64型(double)1*1。
3Mat 方差,计算后同样会变成Float64型1*1。
4掩膜
以下是一个计算图像平均灰度与灰度方差的程序:
void GetGrayAvgStdDev(cv::Mat& src, double& avg, double &stddev)
{
cv::Mat img;
if (src.channels() == )
cv::cvtColor(src, img, CV_BGR2GRAY);
else
img = src;
cv::mean(src);
cv::Mat mean;
cv::Mat stdDev;
cv::meanStdDev(img, mean, stdDev); avg = mean.ptr<double>()[];
stddev = stdDev.ptr<double>()[];
}
最新文章
- Git中如何利用生成SSH个人公钥访问git仓库
- 【JavaScript】浅析javaScript和HTML与unicode字符集的关系
- [转]Liunx上安装svn客户端
- [实变函数]5.2 非负简单函数的 Lebesgue 积分
- lua string 库
- 【转】自定义垂直的UISlider
- Unity3D基础学习 利用NGUI的Texture播放视频
- 小学生之Hibernate插入数据修改数据使用数据库默认值的实现
- ArrayList原理解析
- win7下elasticsearch5.0 安装head插件
- Java之IO流学习总结【上】
- DirectX--Filter属性页的调用
- 【译】Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?
- 在线修改redo日志大小
- IntelliJ IDEA中项目报错org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 8 或maven操作compile报resource使用utf8这样的编码错
- JDBC工具类完整版!
- 18-matlab知识点复习一
- C#设计模式(8)——桥接模式(Bridge Pattern)(转)
- 批量IP自动netcat脚本
- Badge
热门文章
- SqlServer try catch 捕获不到的一些错误及解决方法(转载)
- 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099;
- IntelliMVCCode智能MVC架构的代码助手使用方法
- android nfc中MifareClassic格式的读写
- HDU-1233 还是畅通工程
- PHP+ExtJS 文件上传示例
- Repeater的Item项绑定DropDownList
- iphone 群发短信 闪退 彻底解决
- 点击区域外隐藏该区域,event.stopPropagation()
- 自己写的java excel导出工具类