在 Python 中调用 imageJ 开发
文章目录功能一、在 ImageJ 中进行 Python 开发功能二、在 Python 中调用 imageJ 开发2.1、简介2.2、环境配置2.3、测试一2.4、测试二Python imageJ 解决方案采坑记录功能一、在 ImageJ 中进行 Python 开发原生ImageJ仅支持JS脚本JAVAScript而ImageJ的衍生版本Fiji支持Python脚本编程所以这里的ImageJ实际是Fiji。第一步Fiji官网下载免费https://fiji.sc/第二步安装Fiji第三步打开Fiji第四步ImageJ的Python脚本编程功能二、在 Python 中调用 imageJ 开发2.1、简介PyImageJImageJ2 的 Python 包装器。功能提供了一组包装函数用于ImageJ2 和 Python 之间的集成。它还支持原始的ImageJ API 和数据结构。优点将 ImageJ 和 ImageJ2 与 Python 软件生态系统中提供的其他工具结合起来包括 NumPy、SciPy、scikit-image、CellProfiler、OpenCV、ITK等等。2.2、环境配置安装 PyImageJ: Python wrapper for ImageJ2步骤1pip install imagej步骤2pip install pyimagej步骤3pip install Maven暂时不需要Java环境配置异常提示JVMNotFoundException: No JVM shared library file (jvm.dll) found.中文翻译在系统中找不到Java虚拟机 (JVM) 的共享库文件。解决方案设置JAVA_HOME环境变量该变量指向Java安装目录。1安装Java Oracle JDK 官网下载选择并下载适用于电脑的JDK版本。双击开始安装并按照提示完成。2设置环境变量JDK8.0 环境变量的配置教程3重启Python环境设置环境变量之后重新启动你的 Python 环境以确保更改生效。4在命令提示符中执行命令检查 Java 安装版本java -version、检查 Java 安装路径echo %JAVA_HOME%异常提示[ERROR] Cannot create plugin: org.scijava.plugins.scripting.javascript.JavaScriptScriptLanguage原因分析在初始化 ImageJ 时无法加载 JavaScript 脚本语言插件。通常是由于 JavaScript 插件未安装或配置不正确导致的。解决方案打开 ImageJ选择 Help Update…2.3、测试一importosimportimagej# 设置 JAVA_HOME 路径os.environ[JAVA_HOME]rC:\Program Files\Java\jdk-22os.environ[PATH]os.environ[JAVA_HOME]r\binos.pathsepos.environ[PATH]########################################################################################## Create an ImageJ2 gateway with the newest available version of ImageJ2.ijimagej.init()# Load an image.image_urlhttps://imagej.net/images/clown.jpgjimageij.io().open(image_url)# Convert the image from ImageJ2 to xarray, a package that adds# labeled datasets to numpy (http://xarray.pydata.org/en/stable/).imageij.py.from_java(jimage)# Display the image (backed by matplotlib).ij.py.show(image,cmapgray)2.4、测试二写法一importosimportimagej# 设置 JAVA_HOME 路径os.environ[JAVA_HOME]rC:\Program Files\Java\jdk-22os.environ[PATH]os.environ[JAVA_HOME]r\binos.pathsepos.environ[PATH]########################################################################################## 初始化 ImageJ指定 mode 参数为 IJ标准模式或 interactive 或 batch 根据需要选择ijimagej.init(modeinteractive)# 可以改为 batch 或 interactive 根据需要# 使用三重引号的字符串定义宏代码以提高可读性macro_code open(F:/py/image.tif); selectImage(image.tif); run(Enhance Contrast, saturated0.35); setOption(ScaleConversions, true); run(8-bit); saveAs(Tiff, F:/py/image8.tif); # selectImage表示选择已打开图像# 运行宏ij.py.run_macro(macro_code)print(macro_code)# 打印宏代码进行调试写法二importosimportimagej# 设置 JAVA_HOME 路径os.environ[JAVA_HOME]rC:\Program Files\Java\jdk-22# 环境配置中的JAVA_HOMEos.environ[PATH]os.environ[JAVA_HOME]r\binos.pathsepos.environ[PATH]#########################################################################################input_imagerF:/py/image.tiffile_nameos.path.basename(input_image)pathos.path.dirname(input_image)output_imagepathf/image8.tifprint(file_name)print(path)print(output_image)########################################################################################## 使用三重引号的字符串定义宏代码以提高可读性macro_codef open({input_image}); selectImage({file_name}); //run(Brightness/Contrast...); run(Enhance Contrast, saturated0.35); setOption(ScaleConversions, true); run(8-bit); saveAs(Tiff, {output_image}); #########################################################################################ijimagej.init()# 初始化 ImageJ指定 mode 参数为 IJ标准模式或 interactive 或 batch 根据需要选择ij.py.run_macro(macro_code)# 运行宏print(macro_code)# 打印宏代码进行调试 1ROI区域选择imagej不支持 功能限制run(Specify ROI Size, width1920 height1850); 报错提示Macro Error: Unrecognized command: Specify ROI Size in line 4 2makeRectangle(113, 473, 500, 500); # xywh: xy表示矩形的左上角坐标wh表示矩形的宽和高 3os.path.join拼接后得到的路径存在正反斜杠问题imagej不支持 4注意{input_image}中双引号不能省略