在Python中调用imageJ开发


Python + imageJ 解决方案,采坑记录

一、在ImageJ中,进行Python开发

原生ImageJ仅支持JS脚本(JAVAScript),而ImageJ的衍生版本Fiji支持Python脚本编程,所以这里的ImageJ实际是Fiji。

在这里插入图片描述

二、在Python中,调用imageJ开发

2.1、简介

PyImageJ:ImageJ2 的 Python 包装器。

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

2.2、环境配置

  • 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、测试一

在这里插入图片描述

import os
import imagej

# 设置 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、测试二

在这里插入图片描述

写法一:

import os
import imagej

# 设置 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)

写法二:

import os
import imagej

# 设置 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()  # 初始化ImageJ

input_downsample = r"F:/py/image.tif"
output_downsample = r"F:/py/image8.tif"
file_name = os.path.basename(input_downsample)

# 使用三重引号的字符串定义宏代码,以提高可读性
macro_code = f"""
    open("{input_downsample}");
    selectImage("{file_name}");
    //run("Brightness/Contrast...");
    run("Enhance Contrast", "saturated=0.35");
    setOption("ScaleConversions", true);
    run("8-bit");
    saveAs("Tiff", "{output_downsample}");
"""
ij.py.run_macro(macro_code)  # 运行宏

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖墩会武术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值