keras.preprocessing.image不能导入load_img和img_to_array函数

Jupyter Notebook6.5.4
tensorflow 2.12.0
keras 2.12.0

原因:
查看image.py 源文件,并没有找到 load_img(), img_to_array() 两个方法,原因在于 keras 2.6 版本之后就发生了变化,类中的有些方法被迁移到其它地方或者被删除了。

但经过查找会发现这两个方法是 images_utils 的方法属性。

解决办法:
1、把keras和tensorflow版本降低,keras 2.3.1版本包含 load_img 函数。
pip install keras==2.3.1

2、使用 image_utils 的 load_img(), img_to_array() 两个方法即可。

from keras.utils import image_utils
 import numpy as np
   
pic_dog='./catsdogs/dog.jpg'
pic_dog=image_utils.load_img(pic_dog,target_size=(50,50))
pic_dog=image_utils.array_to_img(pic_dog)
pic_dog=np.array(pic_dog)
pic_dog=pic_dog/255
pic_dog=pic_dog.reshape(1,50,50,3)
result_dog=model.predict(pic_dog)
print('Dog:',result_dog)

这里需要注意的是,使用image_utils加载图片,返回的对象是 PIL 图像对象,而不是Numpy数组,需要将PIL图像转换为Numpy数组,在旧版本的keras中是不用专门处理的,但新版本需要处理一下 ,引入numpy直接转换

解决方法:
import numpy as np
pic_dog=np.array(pic_dog)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值