• 在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环境配置

    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')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    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)运行宏
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    写法二:

    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)  # 运行宏
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    C#教学辅助系统网站as.net+sqlserver
    对全局解释器锁GIL的一些理解
    Linux C语言 UDP协议实现的网络聊天室
    JMS578 之Android平台适配
    JS——Math 数学函数、toFixed 保留小数位
    Zookeeper选举Leader源码剖析(二)
    go语言tcp协议实现文件上传
    java框架常见的面试题
    leetcode 887 ——扔鸡蛋
    node 包管理工具对比 npm、yarn、pnpm、yarn berry
  • 原文地址:https://blog.csdn.net/shinuone/article/details/134400066