一、引言

这篇博客的主要知识点为:像素值统计

  • 最小(min)
  • 最大(max)
  • 均值(mean)
  • 标准方差(standard deviation)

API 的知识点为:

  • 最大最小值minMaxLoc
  • 计算均值与标准方差meanStdDev

二、主要内容

主要有两个API函数:

2.1 minMaxLoc

2.1.1 函数原型

void minMaxLoc( const Mat& src,  double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const Mat& mask=Mat() );
void minMaxLoc(const MatND& src, double* minVal, double* maxVal, int* minIdx=0, int* maxIdx=0, const MatND& mask=MatND() );
void minMaxLoc(const SparseMat& src, double* minVal, double* maxVal, int* minIdx=0, int* maxIdx=0);

2.1.2 参数解释

参数1:InputArray类型的src,输入单通道数组(图像)。
参数2:double*类型的minVal,返回最小值的指针。若无须返回,此值置为NULL。
参数3:double*类型的maxVal,返回最大值的指针。若无须返回,此值置为NULL。
参数4:Point*类型的minLoc,返回最小位置的指针(二维情况下)。若无须返回,此值置为NULL。
参数5:Point*类型的maxLoc,返回最大位置的指针(二维情况下)。若无须返回,此值置为NULL。
参数6:InputArray类型的mask,用于选择子阵列的可选掩膜。

2.1.3几点说明:

1 minMaxLoc寻找矩阵(一维数组当作向量,用Mat定义) 中最小值和最大值的位置.
2 参数若不需要,则置为NULL或者0,即可.
3 minMaxLoc针对Mat和MatND的重载中 ,第5个参数是可选的(optional),不使用不传递即可.

PS:minMaxLoc针对单通道图像,minMaxIdx则不限制(不过输出的坐标会变成三维)。

2.2 meanStdDev

计算矩阵的均值和标准偏差。

C++: void meanStdDev(InputArray src,OutputArray mean, OutputArray stddev, InputArray mask=noArray())Python: cv2.meanStdDev(src[,mean[, stddev[, mask]]]) → mean, stddevC: void cvAvgSdv(constCvArr* arr, CvScalar* mean, CvScalar* std_dev, const CvArr* mask=NULL )Python: cv.AvgSdv(arr,mask=None) -> (mean, stdDev)
src:输入矩阵,这个矩阵应该是1-4通道的,这可以将计算结果存在Scalar_ ‘s中mean:输出参数,计算均值stddev:输出参数,计算标准差mask:可选参数

三、代码演示

(注意我用的是release X64跑的)

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main(int argc, char** argv)
{Mat src = imread("C:/Users/Dell/Desktop/myself/caomei.jpg", IMREAD_GRAYSCALE);if (src.empty()) {printf("could not load image...\n");return -1;}namedWindow("input", WINDOW_AUTOSIZE);imshow("input", src);double minVal; double maxVal; Point minLoc; Point maxLoc;minMaxLoc(src, &minVal, &maxVal, &minLoc, &maxLoc, Mat());printf("min: %.2f, max: %.2f \n", minVal, maxVal);printf("min loc: (%d, %d) \n", minLoc.x, minLoc.y);printf("max loc: (%d, %d)\n", maxLoc.x, maxLoc.y);// 彩色图像 三通道的 均值与方差src = imread("C:/Users/Dell/Desktop/myself/caomei.jpg");Mat means, stddev;meanStdDev(src, means, stddev);printf("blue channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(0, 0), stddev.at<double>(0, 0));printf("green channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(1, 0), stddev.at<double>(1, 0));printf("red channel->> mean: %.2f, stddev: %.2f\n", means.at<double>(2, 0), stddev.at<double>(2, 0));waitKey(0);return 0;
}

四、输出结果

我们的输入源图为:

在读取的时候转为了灰度图:

我们也打印了他的像素值数据:

这样我们就打印出来他的最小最大像素值还有均值和标准方差

这篇博客主要学习了这两个API函数。
加油吧 啊超没有蛀牙!

C++ opencv之像素值统计(minMaxLoc,meanStdDev)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. OpenCV 读写图像、读写像素、修改像素值(案例:图像反处理)

    文章目录 读写图像 1. `imread` 可以指定加载为灰度或者RGB图像. 2. `imwrite` 保存图像文件,类型由扩展名决定. 读写像素 读一个GRAY像素点的像素值(CV_8UC1) 读 ...

最新文章

  1. 100c之36:不同鸡的数量
  2. guests mysql权限_MySQL降权运行之MySQL以Guests帐户启动设置方法
  3. jenkins job config.xml结构
  4. cnn验证码识别代码_中文项目:快速识别验证码,CNN也能为爬虫保驾护航
  5. Matplotlib 中文用户指南 3.6 图例指南
  6. cpuset(7) — Linux manual page
  7. Linux升级ssh、ssl
  8. 2复数与复变函数(二)
  9. 惠新宸:我也曾经是“不适合”编程的人
  10. unity2d自动生成敌人_【A*Pathfinding】超级简单的Unity2D寻路
  11. Java项目:ssm+jsp实现手机WAP版外卖订餐系统
  12. HIbernate Lazy 常用配置
  13. vue安装postcss-pxtorem报错
  14. xcodebuild命令
  15. nvarchar 和varchar区别
  16. TCP-实现英译汉服务器客户端(多进程/多线程)
  17. 语义网简介(三)—RDF与RDF Schema
  18. Spark实现SVM模型
  19. 成大蜗轮蜗杆减速机润滑油说明
  20. python打字机效果_零基础手把手教你用Python做一个怀旧打字机

热门文章

  1. 学习笔记:Spring中default-autowire与autowire区别
  2. 精通 Grails: 用 JSON 和 Ajax 实现异步 Grails
  3. 用户登录界面的测试用例
  4. 笔记本外接显卡坞到底有什么用?磐镭发布镭凌linkX显卡坞
  5. 极度调查:“变阵”中国移动
  6. Teradata sql 常用语句总结
  7. linux下R安装RMySQL不成功 configuration failed for package ‘RMySQL’
  8. 数据库中超码、候选码、主码的理解
  9. 轻松理解skip-gram模型
  10. GNS模拟linux,GNS3模拟器官方版最新版及安装说明