opencv c++图像像素类型转换与归一化(18)

opencv提供的归一化API:

normalize(src, dst, alpha, beta, norm_type, dtype, mask);

src——输入图像

dst——输出图像

alpha = 1——范围归一化的最小值(NORM_MINMAX)

beta = 0——范围归一化的最大值,该参数不能用于范数归一化的模式

norm_type = NORM_L2——归一化类型

dtype = -1——为负数时,默认输出数组的type与输入数组的type相同;否则,输出数组与输入数组只是通道数相同,而tpye=CV_MAT_DEPTH(dtype).

mask = noArray()——用于判断是否只对原图像中mask区域进行归一化处理

归一化类型(  参考网站:OpenCV: Operations on arrays):

opencv c++图像像素类型转换与归一化(18)_第1张图片

实例:

void QuickDemo::normal_demo(Mat& image)
{
	Mat dst;
	cout << image.type() << endl;
	//将输入图像的像素变为float型数据,从CV_8UC3到CV_32FC3,因为归一化必须将像素值转为float型
	image.convertTo(image, CV_32F);
	cout << image.type() << endl;
	//对输入图像归一化,并打印类型
	normalize(image, dst, 1.0,0,NORM_MINMAX);
	cout << dst.type() << endl;
	//在imshow里,如果image的像素值为浮点型,则这些值必须经过归一化,否则无法正常显示
	imshow("图像归一化", dst);
}

注:

1、在进行归一化前,必须将输入的图像像素值使用converTo函数转换为float型。

2、在imshow中,输入图像像素值类型为float型时,在之前必须进行归一化处理,不然无法正常显示,因为imshow函数会自动对float型的像素值乘以255.

你可能感兴趣的:(opencv,c++,opencv,c++)