1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值 平均值和标准差 (minMax

OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值 平均值和标准差 (minMax

时间:2020-02-23 04:35:40

相关推荐

OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值 平均值和标准差 (minMax

OpenCV 学习笔记

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

day13 像素值统计

函数

minMaxLoc(); 最大值最小值统计

CV_EXPORTS_W void minMaxLoc(InputArray src, CV_OUT double* minVal,CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0,CV_OUT Point* maxLoc = 0, InputArray mask = noArray());

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

2,第6个参数是可选的(optional),不使用不传递即可

例1

minMaxLoc(mv[i], &minv, &maxv, &minLoc, &maxLoc, Mat());//统计单通道图像mv[i]中的的最大最小值和指向最大最小值的指针//minMaxLoc()函数 输入图像(mv[i])要求单通道

meanStdDev();平均值和标准方差统计

CV_EXPORTS_W void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev,InputArray mask=noArray());

例2

meanStdDev(image, mean, stddev);//统计image三个通道的均值和标准差

打印时 mean.at< double >(0, 0),mean.at< double >(1, 0),mean.at< double> (2, 0)

分别代表三个通道的均值,mean.at< double >(0, 0),mean.at< double >(0, 1),mean.at< double >(0, 2),也分别代表三个通道的均值而且与前三个一一对应,

标准差同理

stddev.at< double >(i,0)

代码

quickopencv.h

#pragma once#include <opencv2\highgui.hpp>#include <opencv2\imgproc.hpp>using namespace cv;//定义类class QuickDemo{public:void colorSpace_Demo(Mat &image);//色彩空间转换函数-12-24void mat_creation_demo(Mat &image);//Mat对象与创建-12-27void pixel_vist_Demo(Mat &image);//图像像素的读写操作-1-3void operators_demo(Mat &image);//图像像素的算数操作-1-4void tracking_bar_demo(Mat &image);//滚动条操作演示-1-7void key_demo(Mat &image);//键盘响应操作-1-12void color_style_demo(Mat &image);//OpenCV自带颜色表操作-1-12void bitwise_demo(Mat &image);//位操作(逻辑操作)-1-17void channels_demo(Mat &image);//通道分离与合并-1-17void inrange_demo(Mat &image);//roi区域提取 -1-20void pixel_statistic_demo(Mat &image);//像素值统计-1-21};

QuickDemo.cpp

#include <opencv2\highgui.hpp>#include <opencv2\imgproc.hpp>#include<quickopencv.h>#include <iostream>void QuickDemo::pixel_statistic_demo(Mat &image){double minv, maxv;Point minLoc, maxLoc;//位置std::vector<Mat> mv;split(image, mv);//通道分离for (int i = 0; i < mv.size(); i++){minMaxLoc(mv[i], &minv, &maxv, &minLoc, &maxLoc, Mat());//minMaxLoc()函数 输入图像要求单通道std::cout << "No.vhannels." << i << " min value " << minv << " max value " << maxv << std::endl;}Mat mean, stddev;//mean:平均值 stddev:方差meanStdDev(image, mean, stddev);//CV_EXPORTS_W void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev,InputArray mask = noArray());std::cout << "means:" << mean << std::endl;std::cout << "stddev:" << stddev << std::endl;//单独打印for (int i = 0; i < mv.size(); i++){std::cout <<"means:"<< mean.at<double>(i, 0) <<"----"<<"stddev:"<<stddev.at<double>(i,0)<< std::endl;//单个通道打印均值}}

OpencvTest.cpp

#include <iostream>#include <opencv2\highgui.hpp>#include <opencv2\imgproc.hpp>#include<quickopencv.h>using namespace cv;using namespace std;int main(){Mat scr = imread("D:\\学习\\OpenCV学习\\pictures\\image\\绿幕皮卡丘.jfif");//打开一张图if (!scr.data == 1)//判空return -1;namedWindow("窗口1", WINDOW_NORMAL);//创建 WINDOW_FREERATIO窗口imshow("窗口1",scr);//在创建的窗口显示QuickDemo qd;qd.pixel_statistic_demo(scr);waitKey(0);return 0;}

结果:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。