本篇懒得排版,直接在网页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. GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台

    部标gps监控平台的架构,随着平台接入的车辆越来越多,架构也面临越来越大的负载挑战,我们当然希望软件尽可能的优化并能够接入更多的车辆,减少在硬件上的投资.但是当车辆增多到某一个临界点的时候,仍然要面临 ...

  2. Unity和Android互相调用

    安卓部分代码: public class GameMainActivity extends UnityPlayerActivity { private static String CODE_ROOT ...

  3. 使用JFinal的第一个项目出现的问题(The return type is incompatible with JspSourceDependent.getDependants())

    四月 08, 2016 4:35:34 下午 org.apache.catalina.core.ApplicationDispatcher invoke严重: Servlet.service() fo ...

  4. [转]asp三级select菜单联动(加数据库)

    '数据库结构'类别1表名称:a 字段:ID,Name 说明:ID为主键是类别1的ID值,Name为类别1的名称'类别2表名称:aa 字段:ID,aID,Name 说明:ID为主键是类别2的ID值,aI ...

  5. java布局学习 (三)

    前文已经讲了常用的4个布局了,今天再介绍最后的三个布局: 5.CardLayout 6.BoxLayout 7.空白布局null (五)CardLayout   纸牌布局 首先这种布局不是二维布局,而 ...

  6. asp.net 一般处理程序

    一般处理程序类似公共模块,所有页面都可以调用. 一般处理程序 <%@ WebHandler Language="C#" Class="SetGrid" % ...

  7. JavaScript 的倒计时

    一年前,在网上找到的例子,现在已经找不到出处,对不住原作者,请原谅.修改了一下,在刷新页面的情况下,倒计时不重来. 没有任何样式,纯文字倒计时. <!DOCTYPE html> <h ...

  8. .net之工作流工程展示及代码分享(三)数据存储引擎

    数据存储引擎是本项目里比较有特色的模块. 特色一,使用接口来对应不同的数据库.数据库可以是Oracle.Sqlserver.MogoDB.甚至是XML文件.采用接口进行对应: public inter ...

  9. 无法打开键: UNKNOWN\Components\BE1FB738077DBE490AF18C3B9B1A1EE8\E5F5286B58B542741A00A0A9AA420B27

    MSI (s) (D8:38) [07:38:20:634]: 产品: Microsoft SQL Server VSS 编写器 -- 错误 1402.无法打开键: UNKNOWN\Component ...

  10. phpcms V9 栏目管理

    关于phpcms V9框架系统后台管理之栏目管理,请参见下文的源码分析(添加栏目和修改栏目): 参照添加栏目的界面图示,便于对源代码的理解: <?php // 文件路径:phpcms/modul ...