Python中的OpenCV Normalize

2025年1月5日 | 阅读 7 分钟

引言

在本教程中,我们将学习 OpenCV 在 Python 中的归一化。将图像中的像素值更改为使图像更令人满意 Thuscalled image normalization。图像归一化用于增加图像之间的对比度,从而改善图像的特性。对于图像或图像分割,去除图像的流行内容并执行图像归一化,我们在 OpenCV 中使用一个名为 Normalize() 的函数,该函数根据我们的归一化模式输出图像。它特别基于 normalize() 函数。

要在 OpenCV 中归一化图像,我们使用 cv2.normalize() 函数。该函数接受 src、dst、alpha、beta、norm_type、dtype 和 mask 等参数。src 和 dst 是输入和输出图像。它提供与输入相同的大小。Alpha 是归一化范围的最小值,beta 是归一化范围的最大值,norm_type 是归一化类型,dtype 是数据类型。mask 类型是可选的工作掩码。

语法

OpenCV 在 Python 中进行归一化的语法如下:

参数

OpenCV 在 Python 中进行归一化的参数如下:

  1. source_array: 这是对应于归一化输入图像的数组。
  2. destination_array: 这是对应于归一化输出图像的数组。
  3. alpha: 它表示较低范围内的边界值。
  4. beta: 它表示较高范围内的边界值。
  5. normalization_type: 它表示归一化类型。

OpenCV 在 Python 中 normalize() 函数的工作原理

OpenCV 在 Python 中 normalize() 函数的工作过程如下:

  1. 图像归一化是调整特定图像中的像素值以使其对感官更具吸引力的过程。
  2. 它可以增加图像之间的对比度,这有助于去除图像中的特殊特征并使用图像归一化进行图像归一化。
  3. 还可以使用图像归一化去除图像中的噪声。
  4. 要执行图像归一化,我们在 OpenCV 中使用一个名为 normalize() 的函数。
  5. normalize() 函数有五个参数:source_array、destination_array、normalization_type、alpha 和 beta。
  6. source_array 参数是对应于要归一化的输入图像的数组。
  7. destination_array 参数是对应于要归一化的输出图像的数组。
  8. alpha 参数表示较低范围内的边界值。
  9. beta 参数表示较高范围内的边界值。
  10. normalization_type 参数表示归一化类型。
  11. normalize() 函数输出归一化后的图像。

OpenCV 在 Python 中进行归一化的步骤

OpenCV 在 Python 中进行归一化的步骤如下:

  1. 导入所需的库。在下面的所有示例中,Python 库必须是 OpenCV。请确保您已安装它。
  2. 使用 cv2.imread() 方法将输入图像读取为灰度图像。使用图像格式(例如,png 或 jpg)指定图像的完整路径。
  3. 将 cv2.normalize() 应用于输入图像 img。然后,传递 src、dst、alpha、beta、norm_type、dtype 和 mask 参数。
  4. 然后,显示归一化后的输出图像。
  5. 我们还打印归一化之前和之后的图像数据。尝试找出两张图片之间的区别。

在下面的示例中,我们将使用此图像作为输入 -

OpenCV Normalize in Python

程序代码 1

这里我们提供 OpenCV 在 Python 中进行归一化的程序代码。我们使用最小-最大归一化来归一化输入图像的颜色。图像像素值被归一化到指定的范围。代码如下 -

输出

现在,我们运行上面的代码,找到归一化后的图像。我们还找到归一化之前和之后的图像数据。输出如下 -

The image data before the normalization:
 [[158 159 161 ... 172 168 166]
 [171 168 165 ... 170 166 164]
 [167 167 167 ... 172 168 166]
 ...
 [ 15  23  27 ...  13  14  15]
 [ 25  17  19 ...  13  14  15]
 [ 18   5  20 ...  14  14  13]]
The image data after the normalization:
 [[62 62 63 ... 67 66 65]
 [67 66 65 ... 67 65 64]
 [65 65 65 ... 67 66 65]
 ...
 [ 6  9 11 ...  5  5  6]
 [10  7  7 ...  5  5  6]
 [ 7  2  8 ...  5  5  5]]

归一化后的图像也将在下方给出 -

OpenCV Normalize in Python

程序代码 2

这里我们提供 OpenCV 在 Python 中进行归一化的另一个程序代码。我们使用最小-最大归一化来归一化输入图像的颜色。图像像素值被归一化到 0 或 1 的范围。代码如下 -

输出

现在,我们运行上面的代码,找到归一化后的图像。我们还找到归一化之前和之后的图像数据。输出如下 -

The image data before the normalization:
 [[158 159 161 ... 172 168 166]
 [171 168 165 ... 170 166 164]
 [167 167 167 ... 172 168 166]
 ...
 [ 15  23  27 ...  13  14  15]
 [ 25  17  19 ...  13  14  15]
 [ 18   5  20 ...  14  14  13]]
The image data after the Thresholding:
 [[255 255 255 ... 255 255 255]
 [255 255 255 ... 255 255 255]
 [255 255 255 ... 255 255 255]
 ...
 [  0   0   0 ...   0   0   0]
 [  0   0   0 ...   0   0   0]
 [  0   0   0 ...   0   0   0]]
The image data after the normalization:
 [[1. 1. 1. ... 1. 1. 1.]
 [1. 1. 1. ... 1. 1. 1.]
 [1. 1. 1. ... 1. 1. 1.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]]

归一化后的图像也将在下方给出 -

OpenCV Normalize in Python

程序代码 3

这里我们提供 OpenCV 在 Python 中进行归一化的另一个程序代码。我们使用最小-最大归一化来归一化输入图像的颜色。OpenCV 在 Python 中的表示使用 imread() 函数读取图像,使用 normalize() 函数,然后将其归一化到给定的图像,最后将归一化后的图像显示为输出。代码如下 -

输出

现在,我们运行上面的代码,找到归一化后的图像。我们还找到归一化之前和之后的图像数据。输出如下 -

The image data before the normalization:
 [[158 159 161 ... 172 168 166]
 [171 168 165 ... 170 166 164]
 [167 167 167 ... 172 168 166]
 ...
 [ 15  23  27 ...  13  14  15]
 [ 25  17  19 ...  13  14  15]
 [ 18   5  20 ...  14  14  13]]
The image data after the normalization:
 [[62 62 63 ... 67 66 65]
 [67 66 65 ... 67 65 64]
 [65 65 65 ... 67 66 65]
 ...
 [ 6  9 11 ...  5  5  6]
 [10  7  7 ...  5  5  6]
 [ 7  2  8 ...  5  5  5]]

在上面的程序代码中,我们导入了 cv2 和 NumPy 模块。然后,我们使用 imread() 函数读取归一化后的图像。然后,我们使用 normalize() 函数通过指定 source_array、target_array、alpha、beta 和 normalization 模式来归一化给定的图像。然后,归一化后的图像将在屏幕上显示为输出。输出显示在下方 -

OpenCV Normalize in Python

结论 -

在本教程中,我们学习了 OpenCV 在 Python 中的 Normalize 函数。我们学习了 Python 中 normalize() 函数的语法和参数。图像归一化用于增加图像之间的对比度,从而改善图像的特性。我们还讨论了一些 OpenCV 中 normalize() 函数的程序代码,并分享了归一化后的图像。