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());
src:输入图像。
minVal:返回像素最小值。可输入NULL表示不需要。
maxVal :返回像素最大值。可输入NULL表示不需要。
minLoc:返回最小值的位置。可输入NULL表示不需要。
maxLoc:返回最大值的位置。可输入NULL表示不需要。
mask:可选项。
void meanStdDev(InputArray src, OutputArray mean,
OutputArray stddev, InputArray mask=noArray());
src:输入图像。
mean:返回图像像素均值。
stddev:返回图像像素均差值。
mask:可选项。
附录(借鉴别人的):关于位运算中mask的使用详解:
OpenCV探索之路(十三):详解掩膜mask - Madcola - 博客园
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, const char* argv[])
{
Mat src = imread("0003.jpg", IMREAD_GRAYSCALE);
if (src.empty()) {
printf("不能加载图片!\n");
return -1;
}
namedWindow("1--原图", WINDOW_AUTOSIZE);
imshow("1--原图", src);
double minVal, maxVal;
Point minLoc, maxLoc;
//查找图像中像素最小值最大值及它们的位置,设置minLoc maxLoc为point类型 minVal, maxVal为double类型
minMaxLoc(src, &minVal, &maxVal, &minLoc, &maxLoc, Mat());
printf("min: %.2f, max: %.2f \n", minVal, maxVal);
printf("min location: (%d, %d) \n", minLoc.x, minLoc.y);
printf("max location: (%d, %d) \n", maxLoc.x, maxLoc.y);
src = imread("0003.jpg");
Mat means, stddev;
meanStdDev(src, means, stddev);
//计算:彩色图像三通道的均值与方差 mean:返回图像像素均值 stddev:返回图像像素均差值
printf("Channel--[Blue] mean: %.2f, stddev: %.2f\n", means.at<double>(0, 0), stddev.at<double>(0, 0));
printf("Channel--[Green] mean: %.2f, stddev: %.2f\n", means.at<double>(1, 0), stddev.at<double>(1, 0));
printf("Channel--[Red] mean: %.2f, stddev: %.2f\n", means.at<double>(2, 0), stddev.at<double>(2, 0));
waitKey(0);
return 0;
}