我们使用函数cv2.normalize()在OpenCV中归一化图像。此函数接受参数- src、dst、alpha、beta、norm_type、dtype 和 mask。src 和dst是输入图像和与输入相同大小的输出图像,alpha是用于范围归一化的较低标准值, beta 是用于范围归一化的较高标准值,norm_type是归一化类型, dtype 是输出数据类型,而 mask 是可选的操作掩码。
要归一化图像,我们可以按照以下步骤进行:
使用 cv2.imread() 方法将输入图像作为灰度图像读取。指定图像的完整路径以及图像类型(即png或jpg)。
在输入图像img上应用 cv2.normalize() 函数。传递参数 src、dst、alpha、beta、norm_type、dtype 和 mask 。
img_normalized = cv2.normalize(img, None, 0, 1.0, cv2.NORM_MINMAX, dtype=cv2.CV_32F)
显示归一化输出图像。
在Normalize之前和之后打印图像数据。试图找出这两个图像数据之间的差异。
让我们通过一些Python示例来了解问题。
我们将使用此图像作为 输入文件 在以下示例中。
在此Python程序中,我们使用min-max norm对彩色输入图像进行归一化。将图像像素值归一化到范围[0,1]。
#导入所需的库
import cv2
#使用灰度图像读取输入图像
img = cv2.imread('jeep.jpg',0)
print("Normalize之前的图像数据:\n", img)
#归一化图像
img_normalized = cv2.normalize(img, None, 0, 1.0,
cv2.NORM_MINMAX, dtype=cv2.CV_32F)
#可视化归一化图像
cv2.imshow('归一化图像', img_normalized)
cv2.waitKey(0).destroyAllWindows()
print("Normalize之后的图像数据:\n", img_normalized)
运行上述程序时,将产生以下输出 −
Normalize之前的图像数据:
[[ 37 37 37 ... 55 55 55]
[ 39 39 39 ... 57 56 56]
[ 39 39 39 ... 56 56 56]
...
[243 244 244 ... 82 85 86]
[242 245 245 ... 83 91 91]
[242 245 245 ... 86 94 93]]
Normalize之后的图像数据:
[[0.14509805 0.14509805 0.14509805 ... 0.21568629 0.21568629 0.21568629]
[0.15294118 0.15294118 0.15294118 ... 0.22352943 0.21960786 0.21960786]
[0.15294118 0.15294118 0.15294118 ... 0.21960786 0.21960786 0.21960786]
...
[0.95294124 0.9568628 0.9568628 ... 0.32156864 0.33333334 0.3372549 ]
[0.9490197 0.9607844 0.9607844 ... 0.3254902 0.35686275 0.35686275]
[0.9490197 0.9607844 0.9607844 ... 0.3372549 0.36862746 0.3647059 ]]
并且我们得到以下窗口显示归一化的图像 –
在这个Python程序中,我们使用min-max norm规范化二进制输入图像。规范化后的图像像素值为0或1。
# 导入所需库
import cv2
# 读取输入图像作为灰度图像
img = cv2.imread('jeep.jpg',0)
print("标准化前的图像数据:\n", img)
# 应用阈值创建二进制图像
ret,thresh = cv2.threshold(img,140,255,cv2.THRESH_BINARY)
print("阈值化后的图像数据:\n", thresh)
# 规范化二进制图像
img_normalized = cv2.normalize(thresh, None, 0, 1.0,
cv2.NORM_MINMAX, dtype=cv2.CV_32F)
# 可视化规范化后的图像
cv2.imshow('规范化后的图像', img_normalized)
cv2.waitKey(0)
cv2.destroyAllWindows()
print("标准化后的图片数据:\n", img_normalized)
当您运行上述Python程序时,它将产生以下 输出 −
标准化前的图像数据:
[[ 37 37 37 ... 55 55 55]
[ 39 39 39 ... 57 56 56]
[ 39 39 39 ... 56 56 56]
...
[243 244 244 ... 82 85 86]
[242 245 245 ... 83 91 91]
[242 245 245 ... 86 94 93]]
阈值化后的图像数据:
[[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]
[ 0 0 0 ... 0 0 0]
...
[255 255 255 ... 0 0 0]
[255 255 255 ... 0 0 0]
[255 255 255 ... 0 0 0]]
标准化后的图片数据:
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[1. 1. 1. ... 0. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]
[1. 1. 1. ... 0. 0. 0.]]
然后我们得到以下窗口显示规范化后的二进制图像−
为帮助更多对人工智能感兴趣的小伙伴们能够有效的系统性的学习以及论文的研究,小编特意制作整理了一份人工智能学习资料给大家,整理了很久,非常全面。
大致内容包括一些人工智能基础入门视频和文档+AI常用框架实战视频、计算机视觉、机器学习、图像识别、NLP、OpenCV、YOLO、pytorch、深度学习与神经网络等学习资料、课件源码、国内外知名精华资源、以及AI热门论文等全套学习资料。
需要以上这些文中提到的资料,请点击此处→【人工智能全套完整VIP资料】即可免费获取。