OpenCV2+入门系列(四):计算图像的直方图,平均灰度,灰度方差
本篇懒得排版,直接在网页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+入门系列(四):计算图像的直方图,平均灰度,灰度方差的更多相关文章
- C语言高速入门系列(四)
C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经 ...
- OpenCV 学习(计算图像的直方图)
OpenCV 计算图像的直方图 计算图像的直方图是图像处理领域一个非经常见的基本操作. OpenCV 中提供了 calcHist 函数来计算图像直方图.只是这个函数说实话挺难用的,研究了好久才掌握了些 ...
- [转]C# 互操作性入门系列(四):在C# 中调用COM组件
传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...
- spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护
在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...
- Go语言入门系列(四)之map的使用
本系列前面的文章: Go语言入门系列(一)之Go的安装和使用 Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 1. 声明 map是一种映射,可以将键(key)映射到值(val ...
- OpenCV2+入门系列(三):遍历图像的几种方法
根据OpenCV中Mat类型的结构和内存中存储方式,此处给出三种对图像进行遍历的方法.首先给出基础的读取图片代码,在中间替换三种遍历方法即可,本文中,程序将遍历图像并将所有像素点置为255,所有运行结 ...
- OpenCV2+入门系列(二):图像的打开、创建与显示(命令行)
前置知识:数字图像的简略知识 这里只是最基础的知识,上课如果稍微听了课的同学可以直接略过不不看. 彩色图像: 对于一副数字图像,对于一副RGB色彩空间的彩色数字图像,它一共有宽X高个像素格子,每个格子 ...
- 【转载】 mybatis入门系列四之动态SQL
mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...
- OpenCV2+入门系列(一):OpenCV2.4.9的安装与测试
这里假设看到这篇文章的人都已经对OpenCV以及机器视觉等最基础的概念有了一定的认识,因此本文不会对OpenCV做任何的介绍,而是直接介绍OpenCV2.4.9的安装与测试.此外本文只是简单的介绍如何 ...
随机推荐
- hadoop实战 -- 网站日志KPI指标分析
本项目分析apache服务器产生的日志,分析pv.独立ip数和跳出率等指标.其实这些指标在第三方系统中都可以检测到,在生产环境中通常用来分析用户交易等核心数据,此处只是用于演示说明日志数据的分析流程. ...
- 判断访问的是移动端还是PC端,如果是移动端跳转页面
<script type="text/javascript"> var mobileAgent = new Array("iphone", &quo ...
- android 横向滚动条
/*** * 横向滚动条,修改版,从左向右滚动,支持html代码和html里面的网络图片 */public class MarqueeView extends LinearLayout { priva ...
- 5-Zend Studio配置
0-将文件编码设置成utf-8 Window>Preferences>General>Content Types>Text Default encoding:utf-8 1-Z ...
- android案例一 电话拨号器
效果图: 电话拨号器的核心原理: 意图 MainActivity代码: private EditTest et_number; //加载一个布局 setContentView(R.l ...
- Datatypes translation between Oracle and SQL Server
Datatypes translation between Oracle and SQL Server part 1: character, binary strings Datatypes tran ...
- 开通博客的第一天上传我的C#基础笔记,个人觉得很好用。
1.索引器 string arrStr = "sddfdfgfh"; 索引器的目的就是为了方便而已,可以在该类型的对象后面直接写[]访问该对象里面的成员 Console.Wr ...
- Win7+Eclipse+Hadoop2.6.4开发环境搭建
Hadoop开发环境搭建 感谢参考网站:http://www.cnblogs.com/huligong1234/p/4137133.html 一.软件准备 JDK:jdk-7u80-windows-x ...
- C语言回顾-指针
1.指针:地址 指针变量:存放指针的变量 指针变量的定义:数据类型 *指针变量名 或者 数据类型* 指针变量名 指针变量的初始化:int *p=&a;int *p=NULL;(不能先定义后初始 ...
- SVN在eclipse的整合应用
目前很多的Java.Flex.Android开发人员是用eclipse作为开发工具的,本文主要介绍SVN在eclipse平台中的整合应用. 我的eclipse版本是Version: 3.4.2.本身没 ...