TensorFlow识别MNIST手写数字遇到的问题: scipy.misc 没有toimage方法

背景

最近在熟悉TensorFlow时 进行手写数字识别时 需要用到图片输出28*28像素的手写数字 使用了一下的方法

  import scipy.misc as sm
  sm.toimage(image).save(filename)

由于训练模型是在google的colab中进行
但当这条命令执行时 去报了没有toimage这个函数的错误 当即在网上找了 发现scipy.misc中的确有这个函数
很奇怪。。。

原因

当即想到了是不是colab内的scipy版本太低了
查看了一下
在这里插入图片描述

同时在本地也进行了查看
在这里插入图片描述
在本地环境中能够顺利的跑通 并且将图片输出 如下图:
在这里插入图片描述
一开始觉得既然colab的版本不低 按道理来说不应该会有函数缺失呀
不过 就在本地运行代码的时候~~ 真相出现了!!!

在这里插入图片描述
在本地使用1.0.0版本的scipy调用toimage时 出现了这样的警告
显然,这个toimage在1.2.0版本的时候就将会去除 所以colab中的1.3.0版本scipy自然是没有了
【注】:不仅仅是toimage 还有很多如 imread imfilter等等
而它也给出了解决方案 使用PIL中的 Image.fromarray代替

img=PIL.Image.fromarray(image,'L')
img.save(filename)

附:

scipy中没有toimage的原因已经找到了
但是使用PIL代替 同样也遇到了问题
image内存放的是28x28的array
我也尝试了许多种不同的mode来转化image
但是最终输出的结果都是全黑

于是我打印了一下image这个数组中的值

在这里插入图片描述
原来里面的范围是【0-1】 所以出来的图像都是接近0的黑色 所以 将这个数组全部乘以255
我尝试了乘以255后 继续使用 PIL.Image.fromarray(image,‘L’) 但是失败了 图片很奇怪
所以只有用了下面的方式

image = image *255
img = Image.new("L",(28,28))
for i in range(28):
	for j in range(28):
    	img.putpixel((i,j),int(image[i][j]))
img.save(filename)

结果如下图:
在这里插入图片描述
虽然这个方法能够存储 但是总感觉有点笨
不知道是否有更好的方法来存储这种结构的图片 希望大家能一起交流一下~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值