欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何将cv2.imread与keras image.img_load输出相匹配?

程序员文章站 2022-05-16 11:20:02
...

OpenCV以BGR格式读取图像,而在keras中,它以RGB表示。要使OpenCV版本符合我们期望的顺序(RGB),

只需反转通道:

test_image = cv2.imread('some.jpg')
test_image = cv2.resize(test_image, (224, 244))
test_image = test_image[...,::-1] # Added

最后一行将通道反转为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

参考:https://cloud.tencent.com/developer/ask/150710