【图像处理】均值和方差计算c++

计算图像的均值和方差

#include <iostream>
#include <opencv2/opencv.hpp>

std::pair<float,float> cal_mean_std(unsigned char* src, int rows, int cols)
{
	std::pair<float,float> val;
	int r,c;
	int size;
	unsigned char* ptr;
	float sum = 0.0f;
	size = rows * cols;
	for(r = 0; r<rows; r++)
	{
		ptr = src + r*cols;
		for(c = 0; c < cols; c++)
			sum += *(ptr+c);
	}
	val.first = sum / (float)size;

	sum = 0.0f;
	for(r = 0; r < rows; r++)
	{
		ptr = src + r*cols;
		for(c = 0; c < cols; c++)
			sum += std::pow(*(ptr+c)-val.first,2);
	}
	val.second = sqrt(sum/((float)size - 1));
	return val;
}

int main()
{
	cv::Mat src = cv::imread("tsukuba_l.png", 0);
	std::pair<float,float> val = cal_mean_std(src.data, src.rows, src.cols);
	std::cout << "mean : " << val.first << " std:  " << val.second << std::endl;
	return 0;
}

输出:mean: 67.6426 std: 53.5113

发布了35 篇原创文章 · 获赞 13 · 访问量 6332

猜你喜欢

转载自blog.csdn.net/qq_35306281/article/details/96559231
今日推荐