我正在尝试将图像数据作为矩阵读入Python。
在这种程度上,我正在尝试使用scipy.misc.imread('image.jpg').astype(np.float)
。
当我从python3
解释器执行正确的步骤序列时,一切都在顺畅进行,我得到了一个预期的矩阵。
但是,当我从脚本(python3 foo.py
...)调用命令时,我收到错误,抱怨通过float
转换的参数不能是JpegImageFile
类型。我已经确保pip install -U pillow
确保PIL可用。
是什么给出的?怎么可能这样呢?我已经一遍又一遍地验证了在每种情况下执行相同的代码行,唯一的区别似乎是脚本内部的调用发生在已定义的函数内部,但即使我来自其他地方的pdb.set_trace()
在脚本中会发生相同的结果。
什么可能导致解释器到脚本的结果波动?
编辑:好的,确切地说,我从这里运行neural_style.py
脚本:https://github.com/anishathalye/neural-style。必须安装scipy
,numpy
,tensorflow
和pillow
。我正在使用python3
。 --content
,--styles
和--output
的所有参数都可以用来控制错误。
完整错误追溯:
Traceback (most recent call last):
File "neural_style.py", line 150, in <module>
main()
File "neural_style.py", line 84, in main
content_image = imread(options.content)
File "neural_style.py", line 141, in imread
return scipy.misc.imread(path).astype(np.float)
TypeError: float() argument must be a string or a number, not 'JpegImageFile'
但是,如下所示的小型简单脚本实际上有效:
import numpy as np
import scipy.misc
print(scipy.misc.imread('content').astype(np.float))
答案 0 :(得分:1)
我找到了解决方法。由于导入neural_style.py
和scipy
的副作用,stylize.py
脚本似乎获得了vgg.py
模块(或子模块)的不同版本。添加此行:
import scipy.misc
在stylize.py
的最顶部(import vgg
前面)修复它。