当前位置: 首页 > 工具软件 > ImageJ > 使用案例 >

Python 中使用 ImageJ 详细教程

斜单鹗
2023-12-01

ImageJ 中的很多操作都可以用宏(macro)简化,但宏毕竟不是脚本语言,很多 plugins 无法调用,而实际科研中 plugin 的使用有举足轻重的地位。从 ImageJ 1.41 开始,ImageJ 开始支持 Javascript,现在 ImageJ 支持很多种语言,包括 Python、Ruby、R、Java、MATLAB 等等。

具体支持语言及相应调用方法可以参考 官方文档

编写脚本语言最简便的方式是在 Fiji 中选择 Plugins>New,新建一个文本窗口进行编辑,并且可以在窗口的 Language 下任意选择合适的语言编写。详细内容

但目前 ImageJ 的文本编辑器使用体验一般,这篇文章主要讲述如何正确配置环境来调用 API,在 Python 中使用 ImageJ,这样可以自由选择更适合自己的编辑器操作。本人实操中花了不少时间,也走了不少弯路,希望写下来让大家少踩坑,可以更快的使用。

0 准备工作

正确安装 Anaconda/ miniconda,并将 conda 加入到系统环境变量中。
配置环境变量

1 安装 pyimagej

1.1 创建虚拟环境

conda create -n pyimagej -c conda-forge pyimagej openjdk=8 python=3.7
这里创建了 pyimagej 环境,OpenJDK 版本指定为 8,如果未指定应为 OpenJDK 默认是 11,但建议使用 8,更加稳定;Python 指定为 3.7,因为 3.8 之后的版本使用过程中会报错。

在 jupyter notebook 中使用:
import sys
!conda install --yes --prefix {sys.prefix} -c conda-forge pyimagej openjdk=8

1.2 切换到指定环境

conda activate pyimagej

这时在命令行应该能正常执行:
python -c 'import imagej'

更多内容可以参考 github 上介绍 https://github.com/imagej/imagej-server

2 安装 imglyb

conda install -c conda-forge -c hanslovsky imglyb

这时很大可能是无法正常使用的,因为它同时依赖于:

  • Python 3
  • Java 8 JDK (JRE is not enough)
  • Apache Maven
  • PyJNIus with pyjnius.jar with appropriate environment variables
  • scyjava

2.1 配置 PyJNIus

Pyjnius is a Python library for accessing Java classes
具体介绍请见:https://pyjnius.readthedocs.io/en/stable/

在 windows 安装的方法是:(其他系统安装教程参考上面链接)

  1. 下载并安装 JDK(包含 JRE),已经有了可以跳过
    直接在下面链接找适合自己系统的版本下载安装即可
    https://www.oracle.com/java/technologies/javase-jdk15-downloads.html

    jdk 从 11 开始安装默认没有 jre,安装后命令行进入安装 jdk 的文件,如 \Java\jdk-11.0.9,手动执行:
    bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
    即在文件夹下生成 jre 文件

  2. 下载并安装 C 语言编译器

    1. 先建议升级一下 setuptools
      pip install --upgrade setuptools
    2. 安装 Microsoft Visual C++ Build Tools,根据自己的 python 版本选择安装,我安装的环境是 python 3.7
      https://devblogs.microsoft.com/python/unable-to-find-vcvarsall-bat/
  3. 安装 Cython
    python -m pip install --upgrade cython

  4. 安装 Pyjnius
    pip install pyjnius

至此 PyJNIus 应该已经配置完成。

更多内容可以参考 github 上介绍https://github.com/imglib/imglyb

2.2 配置 Maven

http://maven.apache.org/download.cgi
选择 apache-maven-3.6.3-bin.zip 即可(Windows)

2.3 添加环境变量

命令行添加 JAVA_HOME,具体看自己安装位置,下面是我的:
SET "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_271"
注意 JAVA_HOME 尽量不要加 \bin
SET "JRE_HOME=C:\Program Files\Java\jdk1.8.0_271\jre"
SET "JDK_HOME=%JAVA_HOME%"

添加 PATH 到系统环境变量,确保 server 里面有 jvm.dll,对后期使用 Pyjnius 很重要。
SET PATH=%PATH%;C:\Program Files\Java\jdk1.8.0_271\bin\server
SET PATH=%PATH%;C:\Program Files\Java\jdk1.8.0_271\bin

同时在命令行配置:
SET "PYJNIUS_JAR=C:\Users\username\.conda\envs\pyimagej\share\pyjnius"

3 运行

这时应该已经可以正常运行:

import imagej
import imglyb
from imglyb import util
import jnius
from jnius import *

这里要注意 import imglyb 是要在下面其他之前的,可以参照 imglyb-examples

3.1 异常情况处理

如果仍有报错显示环境变量不正确,可以在代码中加入:

import imagej
import os
os.environ["JAVA_HOME"] = "C:/Program Files/Java/jdk1.8.0_271"
os.environ["JDK_HOME"] = "C:/Program Files/Java/jdk1.8.0_271"
os.environ["JRE_HOME"] = "C:/Program Files/Java/jdk1.8.0_271/jre"
os.environ["PYJNIUS_JAR"] = "C:/Users/username/.conda/envs/pyimagej/share/pyjnius/pyjnius.jar"
os.getenv("JAVA_HOME")
os.getenv("JDK_HOME")
os.getenv("JRE_HOME")
os.getenv("PYJNIUS_JAR")
 类似资料: