在OpenCV中,normalize函数用于将数组中的值缩放到特定的范围内。
函数的原型如下:
void normalize(InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray());
参数说明:
- src:输入数组,可以是单通道或多通道的图像,数据类型可以是CV_8U、CV_16U、CV_32F或CV_64F。
- dst:输出数组,与输入数组具有相同的尺寸和数据类型。
- alpha:缩放系数,将src中的值乘以alpha后,再加上beta。
- beta:偏移量,将src中的值乘以alpha后,再加上beta。
- norm_type:归一化类型,指定如何计算归一化的范数。默认值为NORM_L2,表示计算L2范数。其他可选值有NORM_INF(计算无穷范数)和NORM_MINMAX(将值归一化到[0, 1]之间)。
- dtype:输出数组的数据类型,如果为-1,则与输入数组的数据类型相同。
- mask:可选的掩码,指定哪些元素需要进行归一化。如果不需要掩码,则使用默认值noArray()。
使用normalize函数可以将图像的像素值归一化到特定范围内,常用的操作有:
- 将图像像素值归一化到[0, 1]范围内:normalize(src, dst, 0, 1, NORM_MINMAX);
- 将图像像素值归一化到[-1, 1]范围内:normalize(src, dst, -1, 1, NORM_MINMAX);
- 将图像像素值归一化到[0, 255]范围内:normalize(src, dst, 0, 255, NORM_MINMAX, CV_8U);