#include <iostream>
#include "13_opencv_mat.h"using namespace std;void QuickDemo::pixel_statistic_demo(Mat &image)
{/**  函数minMaxLoc用来查找最小和最大元素值及其位置。*  在整个图像(数组)中搜索极值,如果mask不是空数组,则在指定的数组区域中搜索极值。* *    void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, *                 Point* minLoc=0, Point* maxLoc=0, InputArray mask=noArray())* *  参数:*   src   - 单通道图像*  minVal - 指向返回最小值的指针。如果不需要写NULL 或 缺省*  maxVal - 指向返回最大值的指针。如果不需要写NULL 或 缺省*  minLoc - 指向返回的最小位置的指针(在2D情况下)。如果不需要写NULL 或 缺省*  maxLoc - 指向返回的最大位置的指针(在2D情况下)。如果不需要写NULL 或 缺省*   mask  - 可选掩码,用于选择子数组,如果不需要就缺省。* *  需要特别注意的是:*  这个函数不能用于多通道图像(数组)。如果需要在所有通道中找到最小或最大元素(像素值),*  请先首先使用Mat::reshape()将图像(数组)转换为单通道。*    或者你可以使用extractImageCOI()、mixChannels()或split()来提取特定的通道。*/std::vector<Mat> mv;/**  函数原型:void split(const Mat& mtx, vector<Mat>& mv)*  函数功能:将一个多通道阵列划分为几个单通道阵列。*/split(image, mv);imshow("蓝色", mv[0]);imshow("绿色", mv[1]);imshow("红色", mv[2]);double minVal, maxVal;//定义两个变量分别用来记录最大像素值和最小像素值Point minLoc, maxLoc;//记录最大像素值和最小像素值的位置//查找图像中的最小值和最大值。for (int i = 0; i < 3; i++){minMaxLoc(mv[i], &minVal, &maxVal, &minLoc, &maxLoc, noArray());std::cout << "minVal = " << minVal << ",maxVal = " << maxVal << std::endl;std::cout << "minLoc = " << minLoc << ",maxLoc = " << maxLoc << std::endl;}/** 函数原型:void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev, InputArray mask=noArray())  ** 函数功能:计算数组元素的平均值和标准偏差。* 参数:*  src    - 源图像(数组)应该有1到4个通道,以便结果可以存储在Scalar类型的数组中。*  mean   - 输出参数:计算平均值。* stddev  - 输出参数:计算标准偏差。*  mask   - 可选掩码,用于选择子数组,如果不需要就缺省。* * 函数meanStdDev独立计算每个通道的数组元素的均值和标准差,并通过输出参数返回:*/Mat mean, stddev;meanStdDev(image, mean, stddev);std::cout << "mean = " << mean << std::endl;std::cout << "stddev = " << stddev << std::endl;
}

程序运行结果如下:

方差和均值代表的意义及其应用

均值

我们来看不同亮度的同一张图像。

可见,均值可以反应图片的明亮暗程度。

方差

根据计算出来的均值和方差,可以对图像所携带的信息做出一些判断。
比如方差,方差就是数据的分散程度(偏离均值)。图像中有个人和有辆车,那么他们的灰度值是不同的(颜色不同),你把全图像的灰度值取平均,偏离平均值越大,方差越大。方差越大,说明信息越多,能量越大。

比如下面这张图,方差为0,说明该图片的像素点没有变化,是张纯色图片。纯色的图片的每个通道的像素值都等于它每个通道的均值。再根据均值可以判断出该图片是什么颜色的。

Opencv -- 13像素值统计及平均值和方差的意义相关推荐

  1. C++ opencv之像素值统计(minMaxLoc,meanStdDev)

    一.引言 这篇博客的主要知识点为:像素值统计 最小(min) 最大(max) 均值(mean) 标准方差(standard deviation) API 的知识点为: 最大最小值minMaxLoc 计 ...

  2. OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值,平均值和标准差 (minMaxLoc()和meanStdDev()函数的使用)

    OpenCV 学习笔记 day13 像素值统计 函数 minMaxLoc(); 最大值最小值统计 meanStdDev();平均值和标准方差统计 代码 day13 像素值统计 函数 minMaxLoc ...

  3. opencv获取图像像素值的坑

    我最开始学习OpenCV的时候,网上搜索,获取某个像素点的值,大概是这样的, srcImg.at<uchar>(i, j) 当然这样可以获取,但是效率很低,也就是速度很慢,然后网上搜索了第 ...

  4. Python+OpenCV 图像处理系列(4)—— 图像像素的读写、算术运算、逻辑运算及像素的统计

    1. 像素的读写 可以根据像素的行和列的坐标获取它的像素值.对 BGR 图像而言,返回值为 B,G,R 的值. img.shape 可以获取图像的形状.它的返回值是一个包含行数 h,列数 w,通道数 ...

  5. opencv(C++) 视频处理,通过三通道像素值平均 将视频分辨率缩小为原来的一半

    项目要求: 将一个 1920 * 1080 的视频压缩为 960 * 540 的视频,帧率不变.将每个 2 * 2 相邻像素点的像素值求平均,变成一个新的像素点(即 2 * 2 的平均池化). 程序中 ...

  6. OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算

    数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...

  7. opencv(2)- 处理像素值

    opencv中使用Mat数据类型表示图像,这是类似int.float等传统类型的一种opencv中定义的数据类型. opencv常见的数据类型: point:代表二维点,用于图像坐标点.如point( ...

  8. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co

    OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...

  9. opencv C++ 三重for循环遍历RGB图像像素(逐像素操作、操作像素值、遍历像素遍历)at<typename>(i,j)、灰度图at<uchar>、at<Vec3b>、at<Vec3F>

    示例:数组遍历法at<typename>(i,j) -- 其中一种方法(速度可能并不是很快),如果对速度有要求可查看参考文章2里的其他方法 #include <opencv2/ope ...

  10. opencv获得图片的像素宽度_OpenCV中获取图像某一像素值

    Jquery中文网 > 脚本编程  > C语言  > 正文 OpenCV中获取图像某一像素值 OpenCV中获取图像某一像素值 发布时间:2018-12-01   编辑:www.jq ...

最新文章

  1. Windows 64位下安装Redis详细教程
  2. 深度学习中常用的误差方法
  3. Linux工具快速上手,Linux很实用命令
  4. 用python做一些excel的事情,实现数据自动化
  5. map for循环_如何用Map、Filter和Reduce替换Python For循环?
  6. 北邮高级语言设计基于java期末_北邮《高级语言程序设计》第三次阶段作业带答案...
  7. Elasticsearch架构原理
  8. Taro+react开发(65):h5全局重置背景样式
  9. 我们为什么会爱上一个人?
  10. 信息学奥赛一本通(1056:点和正方形的关系)
  11. 程序设计基础要用计算机吗,计算机二级公共基础知识|程序设计基础
  12. 数据库增删改查工具类 以及C3P0开源的JDBC连接池操作
  13. Python的Turtle绘制纳兹咩的娘口三三
  14. 基于JAVA的超市库存管理系统
  15. 流媒体-RTMP协议-librtmp库学习(二)
  16. 软件测试学习书籍8本【经典推荐】
  17. 头像框DIY制作小程序源码王者吃鸡等气泡头像框在线生成源码
  18. 大数据 - MapReduce编程案例 -BH3
  19. Mininet系列实验(五):Mininet设置带宽之简单性能测试
  20. 企业级服务器硬盘和,企业级硬盘与nas硬盘区别是什么,性能哪个好

热门文章

  1. android 拍照 对焦,Android Camera2 拍照(四)——对焦模式
  2. 有氧运动存在哪些误区
  3. QT 代码添加QScrollArea
  4. neo4j 初始密码
  5. 电商销售分析之制作销售看板
  6. Java 盾神与积木游戏
  7. 使用 NW.js 将 Web 应用打包为桌面应用nw-builder
  8. 产品经理眼中的SLAM技术学习路径
  9. 关于greenplum(postgersql)日期为闰年闰月闰日的处理
  10. whisper客服源码_whisper客服系统兼容HTTPS方案