python - 使用Numpy和OpenCV进行图像标准化和归一化

标签 python numpy opencv matplotlib computer-vision

我试图以下列方式使用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/

相关文章:

python - 传递一系列 pandas 数据会引发 KeyError

python - 如何在保留所有行的同时连接行并使每组有一个结果值

pandas - 为每个 CohortGroup 分配适当的 CohortPeriod 计数

python 使用较小的二维数组来映射另一个较大的数组

c++ - 压缩原始图像缓冲区

opencv - 如何对齐(注册)和合并点云以获得完整的 3d 模型?

python - 如何抑制pyinstaller生成的可执行文件窗口中的所有警告

python - 数据类型列表中的字段名称?

python,opencv,图像数组到二进制

c++ - 如何使用 C++ 使用 OpenCV 删除图像中不需要的部分?