我试图以下列方式使用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 :(得分:1)
这是正常行为。标准化图像意味着将其范围从0-255更改为0-1。 Matplotlib检查RGB值的范围并相应显示图像。
对于标准化,如果仔细观察,您会看到颜色偏移。橙色似乎在第二张图像上稍微亮一些。
这些行为是正常的,因为预处理不应更改图像(至少是内部信息),而应有助于模型处理所有图像。