python3解释器给scipy.misc.imread提供了不同于脚本的结果

时间:2016-03-16 04:22:12

标签: python numpy scipy

我正在尝试将图像数据作为矩阵读入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。必须安装scipynumpytensorflowpillow。我正在使用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))

1 个答案:

答案 0 :(得分:1)

我找到了解决方法。由于导入neural_style.pyscipy的副作用,stylize.py脚本似乎获得了vgg.py模块(或子模块)的不同版本。添加此行:

import scipy.misc

stylize.py的最顶部(import vgg前面)修复它。

但是,我真的不确定为什么。

相关问题