如何将 ImageJ 连接到 python?

Jar*_* Du 6 python jython imagej

我正在使用Python设计一个软件,图像处理是其中的步骤之一。我正在使用 ImageJ 来实现这一点。

既然ImageJ里面有Jython解释器,可以在ImageJ软件里面打开,那么肯定有办法把ImageJ连接到Python,调用Python里面的所有函数。

我想知道如何在 Python 中完成所有处理而不是在 ImageJ 中打开解释器?

Hel*_*der 5

有这个https://github.com/imagej/imagej.py模块,它提供了 Python 和 ImageJ 之间的集成。

有了它,您可以轻松地在 Python 中使用 ImageJ。这是一个示例脚本:

# Spin up ImageJ.
import imagej
ij = imagej.init('/Applications/Fiji.app')

# Import an image with scikit-image.
import skimage
from skimage import io
# NB: Blood vessel image from: https://www.fi.edu/heart/blood-vessels
img = io.imread('https://www.fi.edu/sites/fi.live.franklinds.webair.com/files/styles/featured_large/public/General_EduRes_Heart_BloodVessels_0.jpg')
import numpy as np
img = np.mean(img, axis=2)

# Invoke ImageJ's Frangi vesselness op.
vessels = np.zeros(img.shape, dtype=img.dtype)
import imglyb
ij.op().filter().frangiVesselness(imglyb.to_imglib(vessels), imglyb.to_imglib(img), [1, 1], 20) 
Run Code Online (Sandbox Code Playgroud)


chi*_*ffa 1

根据图像的大小,您可以使用Cell Profiler 小组开发的javabridge连接器。然而,它的速度却是出了名的慢。

如果你想设计自己的 ImageJ 绑定,你可以使用jepp / jpype对,但这会是很多工作。

最简单的方法可能是将图像从 ImageJ 保存到外部文件,并编写一个宏来保存图像,启动自定义 python 处理脚本,然后重新打开处理后的图像。