gpt4 book ai didi

python-3.x - 如何匹配 cv2.imread 到 keras image.img_load 输出

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:37 27 4
gpt4 key购买 nike

我正在研究深度学习。训练图像分类算法。然而,问题是我使用的训练图像:

test_image = image.load_img('some.png', target_size = (64, 64))
test_image = image.img_to_array(test_image)

虽然我在实际应用中使用:

test_image = cv2.imread('trick.png')
test_image = cv2.resize(test_image, (64, 64))

但我发现那些给出了不同的 ndarray(不同的数据):

load_image 的最后条目:

  [ 64.  71.  66.]
[ 64. 71. 66.]
[ 62. 69. 67.]]]

来自 cv2.imread 的最后条目:

  [ 15  23  27]
[ 16 24 28]
[ 14 24 28]]]

,所以系统不工作。有没有办法将一个结果与另一个匹配?

最佳答案

OpenCV 以 BGR 格式读取图像,而在 keras 中,它以 RGB 表示。要让 OpenCV 版本对应于我们期望的顺序 (RGB),只需反转 channel :

test_image = cv2.imread('trick.png')
test_image = cv2.resize(test_image, (64, 64))
test_image = test_image[...,::-1] # Added

最后一行将 channel 反转为 RGB 顺序。然后,您可以将其输入到您的 keras 模型中。

我想补充的另一点是,cv2.imread 通常以 uint8 精度读取图像。检查 keras 加载图像的输出,您可以看到数据采用浮点精度,因此您可能还想转换为浮点表示形式,例如 float32:

import numpy as np
# ...
# ...
test_image = test_image[...,::-1].astype(np.float32)

最后一点,根据您训练模型的方式,通常习惯将图像像素值标准化为 [0,1] 范围。如果您使用 keras 模型执行此操作,请确保将通过 OpenCV 读取的图像中的值除以 255:

import numpy as np
# ...
# ...
test_image = (test_image[...,::-1].astype(np.float32)) / 255.0

关于python-3.x - 如何匹配 cv2.imread 到 keras image.img_load 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50746096/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com