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

OpenCV2+入门系列(四):计算图像的直方图,平均灰度,灰度方差的更多相关文章

  1. C语言高速入门系列(四)

    C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经 ...

  2. OpenCV 学习(计算图像的直方图)

    OpenCV 计算图像的直方图 计算图像的直方图是图像处理领域一个非经常见的基本操作. OpenCV 中提供了 calcHist 函数来计算图像直方图.只是这个函数说实话挺难用的,研究了好久才掌握了些 ...

  3. [转]C# 互操作性入门系列(四):在C# 中调用COM组件

    传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...

  4. spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护

    在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...

  5. Go语言入门系列(四)之map的使用

    本系列前面的文章: Go语言入门系列(一)之Go的安装和使用 Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 1. 声明 map是一种映射,可以将键(key)映射到值(val ...

  6. OpenCV2+入门系列(三):遍历图像的几种方法

    根据OpenCV中Mat类型的结构和内存中存储方式,此处给出三种对图像进行遍历的方法.首先给出基础的读取图片代码,在中间替换三种遍历方法即可,本文中,程序将遍历图像并将所有像素点置为255,所有运行结 ...

  7. OpenCV2+入门系列(二):图像的打开、创建与显示(命令行)

    前置知识:数字图像的简略知识 这里只是最基础的知识,上课如果稍微听了课的同学可以直接略过不不看. 彩色图像: 对于一副数字图像,对于一副RGB色彩空间的彩色数字图像,它一共有宽X高个像素格子,每个格子 ...

  8. 【转载】 mybatis入门系列四之动态SQL

    mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...

  9. OpenCV2+入门系列(一):OpenCV2.4.9的安装与测试

    这里假设看到这篇文章的人都已经对OpenCV以及机器视觉等最基础的概念有了一定的认识,因此本文不会对OpenCV做任何的介绍,而是直接介绍OpenCV2.4.9的安装与测试.此外本文只是简单的介绍如何 ...

随机推荐

  1. TortoiseGit上传项目到GitHub////////////////////////////z

    1.安装msysgit和TortoiseGit : 2.TortoiseGit 设置: (1).确保安装成功: (2).设置用户名和邮箱: 3.登陆github并进入设置页面: 4.添加 SSH Ke ...

  2. 使用Git、Git GUI和TortoiseGit

    1. 关于命令行 我一直建议在命令行中使用Git或者SVN.因为这样可能更加了解他们的工作方式,也不容易遗漏重要的问题和提醒. 在Windows习惯的驱使下,大多数人是不会看弹出的对话框中有什么信息的 ...

  3. UIDatePicker日期选取器

    //定义显示日期的格式 NSDateFormatter *dateFormat = [[NSDateFormatter alloc]init]; //NSDateFormatterMediumStyl ...

  4. javaSE第三篇

    1.classpath: set classpath = 类路径 用来找class文件 set classpath = .;(默认表示当前路径   2.数组的拷贝 方法一:Arrays.copyOf( ...

  5. Java多线程开发系列之番外篇:事件派发线程---EventDispatchThread

    事件派发线程是java Swing开发中重要的知识点,在安卓app开发中,也是非常重要的一点.今天我们在多线程开发中,穿插进来这个线程.分别从线程的来由.原理和使用方法三个方面来学习事件派发线程. 一 ...

  6. Python中的传值和引用

    我写这个主要是给自己看,内容也就是便于自己理解,可能会不正确,但目前来看代码测试的结果是对的. python中一切皆对象. 当我们赋值时: a = 1 其实是先创建了一个整数常量1(也是一个对象,且已 ...

  7. python学习笔记系列----(五)输入和输出

    这一章主要是讲述程序展示其数据的一些方法,一般都是直接按照一定的格式输出在屏幕,或者写入到文件以便以后使用.按照一定格式的输出,在python中实际就是对str的操作,主要就是介绍了formart() ...

  8. Objective-C基础4

    1.强指针:默认的情况下所有的指针都是强指针,关键字__strong 弱指针:__week关键字修饰的指针 2.ARC:编译器将自动在代码合适的地方插入retain.release.autorelea ...

  9. Tomcat源码导入eclipse的步骤

    Tomcat源码导入eclipse 一.下载源码 1.  进入Apache 官网:http://tomcat.apache.org/ 2.  在左边侧选择要下载的源码的版本. 3.  或者直接通过Ar ...

  10. ios web html 上传图片到服务器后方向不对解决

    结论: 1.ios上传会在exif中带一个 Orientation的属性,这个属性在windows中不会生效,在ios浏览器中会生效,造成图片在windows资源管理器中与ios浏览器中方向不一致 2 ...