我试图以下列方式使用Numpy和OpenCV标准化然后标准化图像;但是,从matplotlib输出的图像看起来相同。这是为什么?
代码
%matplotlib inline
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np
IMG_SIZE = 256
def show_img(img):
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
imgplot = plt.imshow(img_rgb)
img = cv2.imread('/content/drive/My Drive/ai/test_images/test_image3.tif')
img = cv2.resize(img, (IMG_SIZE, IMG_SIZE))
show_img(img)
img = img.astype('float32')
img = (img - img.mean(axis=(0, 1, 2), keepdims=True)) / img.std(axis=(0, 1, 2), keepdims=True)
img = cv2.normalize(img, None, 0, 1, cv2.NORM_MINMAX)
show_img(img)
最佳答案
这是正常的行为。标准化图像意味着将其范围从0-255更改为0-1。 Matplotlib检查RGB值的范围并相应显示图像。
至于标准化,如果仔细观察,您会看到颜色偏移。橙色在第二张图像上似乎更浅一些。
这些行为是正常的,因为预处理不应更改图像(至少是内部信息),而应帮助模型处理所有图像。
关于python - 使用Numpy和OpenCV进行图像标准化和归一化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57053560/