【OpenCV】图像像素值统计

图像像素值统计

双精度型变量 minv和maxv;指针变量minLoc,maxLoc。

因为这图片是多通道的,所以使用一个容器装取数值,并且用split分离图片到MV中
通过for循环操作,遍历图片信息,并且打印信息到终端。

图像信息包括,方差,均值,大小。

找图像全局最小值和全局最大值

void minMaxLoc( const Mat& src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, const Mat& mask=Mat() );
参数1:src 输入单通道矩阵.

参数2:minVal 返回最小值的指针; 如果不需要输入NULL.

参数3:maxVal 返回最大值的指针; 如果不需要输入NULL.

参数4:minLoc 返回最小值位置的指针 (二维情况下); 如果不需要输入NULL.

参数5:maxLoc 返回最大值位置的指针 (二维情况下); 如果不需要输入NULL.

参数6:mask 可选参数,用于选择一个子矩阵.

扫描二维码关注公众号,回复: 13309691 查看本文章

计算均值和标准差

void meanStdDev(InputArray src,OutputArray mean, OutputArray stddev, InputArray mask=noArray())
src:输入矩阵,这个矩阵应该是1-4通道的,这可以将计算结果存在Scalar_ ‘s中
mean:输出参数,计算均值
stddev:输出参数,计算标准差
mask:可选参数

完整代码

void QuickDemo::pixel_statistic_demo(Mat &image)
{
    
    
	double minv, maxv;//定义最值
	Point minLoc, maxLoc;//定义最值地址
	std::vector<Mat>mv;//mv是一个Mat类型的容器 装在这个容器内
	split(image, mv);
	for (int i = 0; i < mv.size(); i++) 
	{
    
    
		//分别打印各个通道的数值
		minMaxLoc(mv[i], &minv, &maxv, &minLoc, &maxLoc, Mat());//求出图像的最大值和最小值。
		std::cout <<"No.channels:"<<i<<"minvalue:" << minv << "maxvalue:" << maxv << std::endl;
	}
	Mat mean, stddev;
	meanStdDev(image, mean, stddev);//求出图像的均值和方差
	std::cout << "mean:" << mean << std::endl;
	std::cout << "stddev:" << stddev << std::endl;
} 

结果展示

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44824148/article/details/120797439