您当前的位置: 首页 >  Python
  • 0浏览

    0关注

    483博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python报错: scipy.misc module has no attribute imread ... imresize

高精度计算机视觉 发布时间:2019-09-24 18:41:56 ,浏览量:0

相信用python的朋友都碰到过这样的错误,我已经碰到过无数次了,网上下载跑别人的代码时,

scipy.misc module has no attribute “imread” scipy.misc module has no attribute “imresize”

所以在这里立一个帖子。

当然,废话不多说了,主要原因是因为scipy的版本更新到1.2以后,对pillow的支持渐渐减少,其官方的说法是, code is not "ours"

所以网上那些通过降低版本,或安装pillow的方法都是不靠谱的。

当然,本质上scipy也只是对pillow做了一个包装,需要的时候,你是完全可以直接用pillow的。

所以,下面的代码是对应的,

read
misc_image = misc.imread(image_path)

image = PIL.Image.open(image_path)
resize
misc_image = misc.imresize(image, [resize_height, resize_width], interp="bilinear")        

image.resize([resize_height, resize_width], PIL.Image.BILINEAR)

其他类似的函数就不多说了,直接到pillow的文档中去查看吧。

和numpy数据互换

当然,最后你一般都得把这和numpy数据相互转换。

如果你是用misc.image的话,那种老套路一般都是np.array([misc_image])。

不过既然我们将老套路弃之不用,就要用下面的新方法,

#pillow image to numpy array
import numpy as np
picture = np.array(image)
#..or..
picture = np.array(image.getdata()).reshape(image.size[0], image.size[1], 3)

#numpy array to pillow image
im = PIL.Image.fromarray(np.uint8(picture))

要注意里面picture的数据类型是int64的,所以你必须使用np.uint8进行数据转换。

 

关注
打赏
1661664439
查看更多评论
立即登录/注册

微信扫码登录

0.0376s