cv2.imread, skimage.io.imread和keras.preprocessing.image.load_img的区别与转换

这里写自定义目录标题

区别

from keras.preprocessing import image
img = image.load_img(img_path)
img = image.img_to_array(img_path) # R,G,B

import cv2 as cv
img_cv = cv.imread(img_path) #b,g,r

from skimage import io
img_ski = io.imread(img_path) # r,g,b
img == img_cv

#r, g, b == b , g, r
#False True False

转换

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

test_image = cv2.imread(‘trick.png’)
test_image = cv2.resize(test_image, (64, 64))
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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值