在 Python 中调用 imageJ 开发
2026/6/10 16:12:16 网站建设 项目流程

文章目录

  • 功能一、在 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、简介

PyImageJ:ImageJ2 的 Python 包装器。

  • 功能:提供了一组包装函数用于ImageJ2 和 Python 之间的集成。它还支持原始的ImageJ API 和数据结构。
  • 优点:将 ImageJ 和 ImageJ2 与 Python 软件生态系统中提供的其他工具结合起来,包括 NumPy、SciPy、scikit-image、CellProfiler、OpenCV、ITK等等。

2.2、环境配置

  • 安装 PyImageJ: Python wrapper for ImageJ2
    步骤1:pip install imagej
    步骤2:pip install pyimagej
    步骤3:pip 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']=r'C:\Program Files\Java\jdk-22'os.environ['PATH']=os.environ['JAVA_HOME']+r'\bin'+os.pathsep+os.environ['PATH']########################################################################################## Create an ImageJ2 gateway with the newest available version of ImageJ2.ij=imagej.init()# Load an image.image_url='https://imagej.net/images/clown.jpg'jimage=ij.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/).image=ij.py.from_java(jimage)# Display the image (backed by matplotlib).ij.py.show(image,cmap='gray')

2.4、测试二

写法一:

importosimportimagej# 设置 JAVA_HOME 路径os.environ['JAVA_HOME']=r'C:\Program Files\Java\jdk-22'os.environ['PATH']=os.environ['JAVA_HOME']+r'\bin'+os.pathsep+os.environ['PATH']########################################################################################## 初始化 ImageJ,指定 mode 参数为 "IJ"(标准模式),或 "interactive" 或 "batch" 根据需要选择ij=imagej.init(mode='interactive')# 可以改为 'batch' 或 'interactive' 根据需要# 使用三重引号的字符串定义宏代码,以提高可读性macro_code=""" open("F:/py/image.tif"); selectImage("image.tif"); run("Enhance Contrast", "saturated=0.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']=r'C:\Program Files\Java\jdk-22'# 环境配置中的JAVA_HOMEos.environ['PATH']=os.environ['JAVA_HOME']+r'\bin'+os.pathsep+os.environ['PATH']#########################################################################################input_image=r"F:/py/image.tif"file_name=os.path.basename(input_image)path=os.path.dirname(input_image)output_image=path+f"/image8.tif"print(file_name)print(path)print(output_image)########################################################################################## 使用三重引号的字符串定义宏代码,以提高可读性macro_code=f""" open("{input_image}"); selectImage("{file_name}"); //run("Brightness/Contrast..."); run("Enhance Contrast", "saturated=0.35"); setOption("ScaleConversions", true); run("8-bit"); saveAs("Tiff", "{output_image}"); """#########################################################################################ij=imagej.init()# 初始化 ImageJ,指定 mode 参数为 "IJ"(标准模式),或 "interactive" 或 "batch" 根据需要选择ij.py.run_macro(macro_code)# 运行宏print(macro_code)# 打印宏代码进行调试
""" (1)ROI区域选择(imagej不支持) 功能限制:run("Specify ROI Size", "width=1920 height=1850"); 报错提示:Macro Error: Unrecognized command: "Specify ROI Size" in line 4 (2)makeRectangle(113, 473, 500, 500); # xywh: xy表示矩形的左上角坐标,wh表示矩形的宽和高 (3)os.path.join拼接后得到的路径存在正反斜杠问题(imagej不支持) (4)注意"{input_image}"中双引号不能省略 """

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询