如何将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