C++ opencv之像素值统计(minMaxLoc,meanStdDev)
一、引言
这篇博客的主要知识点为:像素值统计
- 最小(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)相关推荐
- OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值,平均值和标准差 (minMaxLoc()和meanStdDev()函数的使用)
OpenCV 学习笔记 day13 像素值统计 函数 minMaxLoc(); 最大值最小值统计 meanStdDev();平均值和标准方差统计 代码 day13 像素值统计 函数 minMaxLoc ...
- opencv获取图像像素值的坑
我最开始学习OpenCV的时候,网上搜索,获取某个像素点的值,大概是这样的, srcImg.at<uchar>(i, j) 当然这样可以获取,但是效率很低,也就是速度很慢,然后网上搜索了第 ...
- Python+OpenCV 图像处理系列(4)—— 图像像素的读写、算术运算、逻辑运算及像素的统计
1. 像素的读写 可以根据像素的行和列的坐标获取它的像素值.对 BGR 图像而言,返回值为 B,G,R 的值. img.shape 可以获取图像的形状.它的返回值是一个包含行数 h,列数 w,通道数 ...
- OpenCV 笔记(06)— Mat 结构、像素值存储方法、创建 Mat 对象各种方法、Mat 对象的运算
数字图像中的每个点都称为像素(对于图像元素),并且每个像素可以存储一个或多个值,这取决于它是否是仅存储一个值的黑白图像(也称为二进制图像,比如只存储0或1),还是存储两个值的灰度图像,或者是存储三个值 ...
- opencv(2)- 处理像素值
opencv中使用Mat数据类型表示图像,这是类似int.float等传统类型的一种opencv中定义的数据类型. opencv常见的数据类型: point:代表二维点,用于图像坐标点.如point( ...
- OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...
- opencv C++ 三重for循环遍历RGB图像像素(逐像素操作、操作像素值、遍历像素遍历)at<typename>(i,j)、灰度图at<uchar>、at<Vec3b>、at<Vec3F>
示例:数组遍历法at<typename>(i,j) -- 其中一种方法(速度可能并不是很快),如果对速度有要求可查看参考文章2里的其他方法 #include <opencv2/ope ...
- opencv获得图片的像素宽度_OpenCV中获取图像某一像素值
Jquery中文网 > 脚本编程 > C语言 > 正文 OpenCV中获取图像某一像素值 OpenCV中获取图像某一像素值 发布时间:2018-12-01 编辑:www.jq ...
- OpenCV 读写图像、读写像素、修改像素值(案例:图像反处理)
文章目录 读写图像 1. `imread` 可以指定加载为灰度或者RGB图像. 2. `imwrite` 保存图像文件,类型由扩展名决定. 读写像素 读一个GRAY像素点的像素值(CV_8UC1) 读 ...
最新文章
- 100c之36:不同鸡的数量
- guests mysql权限_MySQL降权运行之MySQL以Guests帐户启动设置方法
- jenkins job config.xml结构
- cnn验证码识别代码_中文项目:快速识别验证码,CNN也能为爬虫保驾护航
- Matplotlib 中文用户指南 3.6 图例指南
- cpuset(7) — Linux manual page
- Linux升级ssh、ssl
- 2复数与复变函数(二)
- 惠新宸:我也曾经是“不适合”编程的人
- unity2d自动生成敌人_【A*Pathfinding】超级简单的Unity2D寻路
- Java项目:ssm+jsp实现手机WAP版外卖订餐系统
- HIbernate Lazy 常用配置
- vue安装postcss-pxtorem报错
- xcodebuild命令
- nvarchar 和varchar区别
- TCP-实现英译汉服务器客户端(多进程/多线程)
- 语义网简介(三)—RDF与RDF Schema
- Spark实现SVM模型
- 成大蜗轮蜗杆减速机润滑油说明
- python打字机效果_零基础手把手教你用Python做一个怀旧打字机
热门文章
- 学习笔记:Spring中default-autowire与autowire区别
- 精通 Grails: 用 JSON 和 Ajax 实现异步 Grails
- 用户登录界面的测试用例
- 笔记本外接显卡坞到底有什么用?磐镭发布镭凌linkX显卡坞
- 极度调查:“变阵”中国移动
- Teradata sql 常用语句总结
- linux下R安装RMySQL不成功 configuration failed for package ‘RMySQL’
- 数据库中超码、候选码、主码的理解
- 轻松理解skip-gram模型
- GNS模拟linux,GNS3模拟器官方版最新版及安装说明