本篇懒得排版,直接在网页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>()[];
}

最新文章

  1. Git中如何利用生成SSH个人公钥访问git仓库
  2. 【JavaScript】浅析javaScript和HTML与unicode字符集的关系
  3. [转]Liunx上安装svn客户端
  4. [实变函数]5.2 非负简单函数的 Lebesgue 积分
  5. lua string 库
  6. 【转】自定义垂直的UISlider
  7. Unity3D基础学习 利用NGUI的Texture播放视频
  8. 小学生之Hibernate插入数据修改数据使用数据库默认值的实现
  9. ArrayList原理解析
  10. win7下elasticsearch5.0 安装head插件
  11. Java之IO流学习总结【上】
  12. DirectX--Filter属性页的调用
  13. 【译】Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?
  14. 在线修改redo日志大小
  15. IntelliJ IDEA中项目报错org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 8 或maven操作compile报resource使用utf8这样的编码错
  16. JDBC工具类完整版!
  17. 18-matlab知识点复习一
  18. C#设计模式(8)——桥接模式(Bridge Pattern)(转)
  19. 批量IP自动netcat脚本
  20. Badge

热门文章

  1. SqlServer try catch 捕获不到的一些错误及解决方法(转载)
  2. 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099;
  3. IntelliMVCCode智能MVC架构的代码助手使用方法
  4. android nfc中MifareClassic格式的读写
  5. HDU-1233 还是畅通工程
  6. PHP+ExtJS 文件上传示例
  7. Repeater的Item项绑定DropDownList
  8. iphone 群发短信 闪退 彻底解决
  9. 点击区域外隐藏该区域,event.stopPropagation()
  10. 自己写的java excel导出工具类