SimpleITK.Show() 在 Linux 上的 ImageJ 中生成错误

问题描述 投票:0回答:3

编辑说明: 这个问题最初表述为

如何在 Linux 中将 SimpleITK.Show() 链接到 imageJ?

通过将 SimpleITK 1.0.0 升级到 1.0.1,我能够从 SimpleITK.Show() 启动 ImageJ。但是,ImageJ 无法打开“sample_mri.hdr”。 ImageJ 生成以下错误消息。

文件格式不受支持,读者

插件不可用,或者找不到。

root/local/linux/ImageJ/open("/temp/TempFile-7131-2.nii");

root/local/linux/ImageJ/rename("/temp/TempFile-7131-2.nii");

我已经为 ImageJ 安装了合适的插件来读取 hdr/img(分析格式)。我可以通过转到文件>打开

直接从ImageJ打开“sample_mri.hdr”

调试信息:

sitk.Show(img, 'sample image', debugOn=True)

FindApplication搜索路径:[ ./Fiji.app, /cis/home/vwang/bin/Fiji.app, ~/bin/Fiji.app, /opt/Fiji.app, /usr/local/Fiji.app ]

结果:

FindApplication搜索路径:[ ./Fiji.app, /cis/home/vwang/bin/Fiji.app, ~/bin/Fiji.app, /opt/Fiji.app, /usr/local/Fiji.app ]

结果:

FindApplication搜索路径:[ ./ImageJ, /cis/home/vwang/bin/ImageJ, ~/bin/ImageJ, /opt/ImageJ, /usr/local/ImageJ ]

结果:

FindApplication搜索路径:[ ./, /cis/home/vwang/bin/, ~/bin/, /opt/, /usr/local/ ]

结果:/usr/local/bin/ImageJ

显示命令:'/usr/local/bin/ImageJ' '-e' 'open("/tmp/sample-4434-0.nii");重命名(“样品”);'

插件:

如何在 Linux 中将 SimpleITK.Show() 链接到 imageJ?

我已经下载了ImageJ,直接运行ImageJ就可以查看图片了。过去曾提出并回答过类似的问题(不能“链接”SimpleITK::Show() 与 FIJI),但解决方案是针对 windows 操作系统的。

的 unix 等价物是什么
setx SITK_SHOW_COMMAND "C:\blah\blah\ImageJ\ImageJ.exe

我的python代码:

import SimpleITK as sitk

img = sitk.ReadImage("sample_mri.hdr")
sitk.Show(img, 'sample image')

错误信息:

    return _SimpleITK.Show(*args, **kwargs)
RuntimeError: Exception thrown in SimpleITK Show: 
/tmp/SimpleITK/Code/IO/src/sitkShow.cxx:500:
sitk::ERROR: Error in administrating child process: [No such file or directory]
python ubuntu unix imagej simpleitk
3个回答
3
投票

在 Ubuntu 上,我遇到了完全相同的问题,这是解决方案:

  1. 下载http://imagej.net/Fiji
  2. 解压斐济到主目录,~/Fiji.app
  3. 将此文件夹添加到您的 PATH

fiji 将包含显示 mri 文件所需的所有插件,例如 nifti 和 mha


1
投票

SimpleITK 无法找到 ImageJ。尝试将 debugOn=True 参数添加到 Show 命令。这将向您显示它用于尝试查找 ImageJ 的搜索路径。

所以你的节目如下:

sitk.Show(img, 'sample image', debugOn=True)

在 Linux 系统上,SimpleITK 会搜索以下选项的路径:Fiji.app/ImageJ-linux64、Fiji.app/ImageJ-linux32、ImageJ/imagej、ImageJ 和 imagej。

如果您的 ImageJ 可执行文件被命名为其他名称,SimpleITK 将找不到它。我建议使用软链接使其可找到,或者使用 SITK_SHOW_COMMAND 环境变量。

更新:找不到 ImageJ 是您最初的问题。我不确定你的更新,但是设置了 debugOn 标志,你可以看到 SimpleITK 用来尝试启动 ImageJ 的实际命令行。


0
投票

在 Ubuntu 上,我执行了以下操作并且有效:

  1. 下载http://imagej.net/Fiji
  2. 解压斐济到主目录,
    unzip Fiji-download.zip -d ~/.
  3. 将此文件夹添加到您的 PATH 或导出路径为:
    export SITK_SHOW_COMMAND="$HOME/Fiji.app/ImageJ-linux64"
    在您的 shell 上。

SimpleITK 应该在没有它的情况下找到 ImageJ,因为它位于预期的位置,但只需尝试一下,看看它是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.