在OpenCV中,minMaxLoc
和meanStdDev
是两个用于统计图像或数组中元素的基本特性的函数。这些统计函数对于图像处理、特征提取和数据分析非常有用。
minMaxLoc
minMaxLoc函数用于查找数组或图像中的最小值和最大值,并可选地返回这些值的位置。这在处理图像时特别有用,比如在动态调整对比度或进行阈值操作之前确定图像的亮度范围。
void minMaxLoc(InputArray src, double* minVal, double* maxVal = 0, Point* minLoc = 0, Point* maxLoc = 0, InputArray mask = noArray());
- src:输入数组,通常是一个单通道图像。
- minVal,maxVal:指向double类型变量的指针,用于存储数组中的最小值和最大值。
- minLoc,maxLoc:可选的指针,指向Point类型的变量,用于存储最小值和最大值的位置。
- mask:可选的操作掩码,用于指定要检查哪些数组元素。
meanStdDev
meanStdDev函数计算数组或图像的平均值和标准偏差。这对于分析图像的亮度和对比度变化非常有用,可以帮助我们理解图像的统计特性。
void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev, InputArray mask = noArray());
- src:输入数组,可以是多通道的。
- mean:输出参数,存储每个通道的平均值。
- stddev:输出参数,存储每个通道的标准偏差。
- mask:可选的操作掩码,用于指定要计算哪些数组元素的平均值和标准偏差。
例子
void QuickDemo::image_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());
std::cout <<"No.channels:"<<i<< "min value:" << minv << "max value" << maxv << std::endl;
}
Mat mean, stddev;
meanStdDev(image, mean, stddev);
std::cout << "mean:" << mean <<std::endl << "stddev" << stddev << std::endl;
}