图像像素值统计
双精度型变量 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 可选参数,用于选择一个子矩阵.
计算均值和标准差
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;
}