文章目录
- 一、在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环境配置
BUG提示:JVMNotFoundException: No JVM shared library file (jvm.dll) found.
BUG翻译:在系统中找不到Java虚拟机 (JVM) 的共享库文件。
解决方案:设置JAVA_HOME环境变量,该变量指向Java安装目录。
- (1)在Windows上安装Java: Oracle JDK 下载页面,选择并下载适用于电脑的JDK版本。运行安装程序,并按照提示完成安装。
- (2)设置环境变量:JDK8.0 环境变量的配置教程
- (3)重新启动Python环境:设置环境变量之后,重新启动你的 Python 环境,以确保更改生效。
- (4)检查 Java 安装版本与安装路径:
- 在终端或命令提示符中运行
java -version
- 在终端或命令提示符中运行
echo %JAVA_HOME%
2.3、测试一
# Create an ImageJ2 gateway with the newest available version of ImageJ2.
import imagej
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 imagej
ij = imagej.init() # (1)初始化ImageJ
# (2)使用三重引号的字符串定义宏代码,以提高可读性
macro_code = """
open("C:/Users/Administrator/Desktop/py/test/image.tif");
selectImage("image.tif");
//run("Brightness/Contrast...");
run("Enhance Contrast", "saturated=0.35");
setOption("ScaleConversions", true);
run("8-bit");
saveAs("Tiff", "C:/Users/Administrator/Desktop/py/test/image8.tif");
"""
ij.py.run_macro(macro_code) # (3)运行宏
写法二:
import imagej
import os
ij = imagej.init() # 初始化ImageJ
input_downsample = r"D:/BIRDS/_test_image/_coach_path_561temp/registration/coarse/downSampleImage.tif"
output_downsample = r"D:/BIRDS/_test_image/_coach_path_561temp/registration/coarse/downSampleImage1.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) # 运行宏