OpenCV normalize() 函数详解及用法示例
发布时间:2025-06-24 17:15:52 作者:北方职教升学中心 阅读量:553
。对于数组༈,OpenCV的normalize函数用于;图像)归一化处理,将数组中的元素缩放到指定范围或具体标准(如平均值和标准差)。它有两个原型函数, 如下:。
Normalize()规范数组的范数或值范围。normtype#61;NORM_INF、NORML1或NORM_L2时间函数cv::normalize将输入数组元素归一化并移位#xff0c;使得∥dst∥Lp=alpha(其中p=Inf、1或2;或者normtype#61;NORM_MINMAXminIdst(I)=alpha,maxIdst(I)=beta(仅适用于密集数组)。可选掩码指定要标准化的子数组。这意味着在子数组上计算范数或 min-n-max,然后修改子数组进行归一化。如果只想用掩码计算范数或最小值-最大值,则修改整个数组,可使用范数和 Mat::convertTo。
。
函数参数:。
src 输入数组(单通道或多通道)。
dst 输出数组,与输入数组相同的形状和类型(或者根据dtype参数指定的类型)。
alpha在范围归一化的情况下,范值或范围下限应归一化(normType=NORM_MINMAX)。
beta 范围归一化的范围上限(只需使用NORM_MINMAX类型);不用于范数标准化。
normal_type 有以下几种标准化类型:
dtype 当为负数时输出数组与 src 同一类型;否则,它具有与 src 通道数量和深度相同 =CV_MAT_DEPTH(dtype)。
mask 可选操作掩码。
这是一个重载成员函数,为方便起见而提供。它与上述函数的区别仅在于它所接受的参数。
。 示例:
。 新的控制台应用程序Project,在源程序中添加以下代码#xff1a;
// normalizeTest.cpp : 此文件包含 "main" 函数。程序执行将在这里开始和结束。//#include <iostream>#include <opencv2//opencv.hpp>using namespace std;using namespace cv;int main(){ vector<double> data = { 1,2,3,4,10}; vector<double> ndata; int length = data.size(); cout << "Data:" << endl; for (int i = 0; i < length; i++) { cout << data[i] << " "; } cout << endl; cout << endl; //normal_type: NORM_INF normalize(data, ndata, 1.0, 0, NORM_INF); cout << "NORM_INF result:" << endl; for (int i = 0; i < length; i++) { cout << ndata[i]; } cout << endl; cout << endl; //normal_type: NORM_L1 normalize(data, ndata, 1.0, 0, NORM_L1); cout << "NORM_L1 result:" << endl; for (int i = 0; i < length; i++) { cout << ndata[i]<<" "; } cout << endl; cout << endl; //normal_type: NORM_L2 normalize(data, ndata, 1.0, 0, NORM_L2); cout << "NORM_L2 result:" << endl; for (int i = 0; i < length; i++) { cout << ndata[i]<<" "; } cout << endl; cout << endl; //normal_type: NORM_MINMAX 1 normalize(data, ndata, 1.0, 0, NORM_MINMAX); cout << "NORM_MINMAX 1 result:" << endl; for (int i = 0; i < length; i++) { cout << ndata[i] << " "; } cout << endl; cout << endl; //normal_type: NORM_MINMAX 1 normalize(data, ndata, 0, 255, NORM_MINMAX); cout << "NORM_MINMAX 2 result:" << endl; for (int i = 0; i < length; i++) { cout << ndata[i] << " "; } return 0;}。
试运行,结果如下::