我正在使用Python设计一个软件,图像处理是其中的一个步骤。我正在使用ImageJ来实现这一点。
由于在ImageJ中有一个可以在ImageJ软件中打开的Jython解释器,因此必须有一种方法将ImageJ连接到Python并调用Python中的所有函数。
我想知道如何才能在Python语言中完成所有处理,而不是在ImageJ中打开解释器?
发布于 2018-06-30 20:17:21
有一个在Python和ImageJ之间提供集成的https://github.com/imagej/imagej.py模块。
有了它,你就可以很容易地在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) 发布于 2015-04-23 00:00:30
python EDIT 2018-07-02:现在有了一个允许从启动和使用ImageJ的ImageJ Python模块。
我想知道如何才能在
中完成所有处理,而不是在ImageJ中打开解释器?
您可以编写一个带有特殊标头的Jython脚本,该脚本使用ImageJ启动器来执行,确保所有需要的库都在类路径中:
#!/bin/sh
''''exec "$(dirname "$0")"/ImageJ.sh --jython "$0" "$@" # (call again with fiji)'''但这种攻击只适用于POSIX兼容的平台(例如,在Windows的情况下,您需要CYGWIN)。
Fiji包括several example scripts like this-a,简短而甜蜜的一个是screenshot.py。
请注意,Jython不能调用由本机代码(例如,scipy和numpy)支持的Python库。但是有一个试验性的CPython script language,它使用javabridge。它还不成熟,还没有随Fiji一起发布。但它允许从ImageJ调用原生Python代码,包括C/C++支持的库。该计划是在未来的斐济包括这种语言。同时,您可以自己构建它,并将JAR文件放到ImageJ的jars文件夹中。当然,feedback是受欢迎的。
如果您想要开发一个更全面的“以Python为中心”的解决方案,那么在ImageJ wiki中添加一个关于它的页面将是非常棒的!
发布于 2017-07-06 17:25:50
imglib2-imglyb项目允许使用ImgLib2从Java访问numpy数组,反之亦然。
在imglyb-examples上可以找到一些说明性示例。
https://stackoverflow.com/questions/29749687
复制相似问题