scipy.misc.imshow RuntimeError('无法执行图像视图')

Posted

技术标签:

【中文标题】scipy.misc.imshow RuntimeError(\'无法执行图像视图\')【英文标题】:scipy.misc.imshow RuntimeError('Could not execute image view')scipy.misc.imshow RuntimeError('无法执行图像视图') 【发布时间】:2017-03-06 21:25:21 【问题描述】:

我正在测试scipy.misc.imshow,我得到了RuntimeError:无法执行图像查看器

我正在使用 Python3.4 并在 CentOS 7 上运行它。

import scipy.misc
img = scipy.misc.imread('Data/cat.jpg')
assert len(img.shape) == 3
img_resized = scipy.misc.imresize(img, (224, 224))
img_answer = (img_resized/255.0).astype('float32')
scipy.misc.imshow(img_answer)

我得到了一个错误:

sh: see: command not found
Traceback (most recent call last):
  File "/usr/local/pycharm/helpers/pydev/pydev_run_in_console.py", line 71, in <module>
    globals = run_file(file, None, None)
  File "/usr/local/pycharm/helpers/pydev/pydev_run_in_console.py", line 31, in run_file
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/usr/local/pycharm/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/root/PycharmProjects/myVQA/testgood.py", line 6, in <module>
    scipy.misc.imshow(img_answer)
  File "/usr/lib64/python3.4/site-packages/scipy/misc/pilutil.py", line 442, in imshow
    raise RuntimeError('Could not execute image viewer.')
RuntimeError: Could not execute image viewer.

它说找不到see 命令。 CentOS7 上的see 命令安装在哪里?我该如何解决这个问题?

我尝试将SCIPY_PIL_IMAGE_VIEWER=/bin/eog 添加到/etc/profile 但这似乎没有帮助。

【问题讨论】:

【参考方案1】:

以下内容也适用于我(比使用 matplotlib 更轻、更快):

from os import environ
environ['SCIPY_PIL_IMAGE_VIEWER'] = your image viewer pgm # e.g. C:/IrfanView/i_view32.exe

然后我可以使用 scipy 的 imshow()。

【讨论】:

【参考方案2】:

您可以使用matplotlib.pyplot 来替代使用SciPy's imshow 方法。

import scipy.misc
img = scipy.misc.imread('Data/cat.jpg')
assert len(img.shape) == 3
img_resized = scipy.misc.imresize(img, (224, 224))
img_answer = (img_resized/255.0).astype('float32')

import matplotlib.pyplot as plt
plt.imshow(np.uint8(img_tinted))
plt.show()

=>

附:如果我们直接将图像绘制为plt.imshow(img_tinted),那么如果呈现给它的数据不是以unit8的形式出现的,它有时可能会给出奇怪的结果。因此,为了防止这种情况,我们将np.uint8 显式转换为图像,例如plt.imshow(np.uint8(img_tinted))

下图显示了没有 np.uint8 时的输出

【讨论】:

是的,它有效。但是,它并没有解决问题所在的scipy的imshow()的问题。 建议另一个包并不能解决问题,而是忽略它。而您简单而真实地解决了问题之后才这样做! (我应该对你投反对票,但我不习惯这样做。)【参考方案3】:

我通过以下方式解决了我的问题:

1 将以下内容添加到 /etc/profile

SCIPY_PIL_IMAGE_VIEWER=/bin/eog
export SCIPY_PIL_IMAGE_VIEWER

2 重启

如果你不导出 SCIPY_PIL_IMAGE_VIEWER,​​

cmd = os.environ.get('SCIPY_PIL_IMAGE_VIEWER', 'see')

无法识别 SCIPY_PIL_IMAGE_VIEWER

【讨论】:

以上是关于scipy.misc.imshow RuntimeError('无法执行图像视图')的主要内容,如果未能解决你的问题,请参考以下文章

iOS runtime探究: 从runtime开始深入weak实现机理

java的Runtime的exec

`@babel/runtime` 和 `@babel/plugin-transform-runtime` 版本

iOS runtime探究: 从runtime开始理解OC的属性property

iOS runtime探究: 从runtime開始深入理解OC消息转发机制

Runtime 类初探