在OpenCV中,minMaxLocmeanStdDev是两个用于统计图像或数组中元素的基本特性的函数。这些统计函数对于图像处理、特征提取和数据分析非常有用。

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;

}

OpenCV统计函数之minMaxLoc和meanStdDev-LMLPHPOpenCV统计函数之minMaxLoc和meanStdDev-LMLPHP

02-21 23:41