跳转到主要内容

读写ImageJ ROI格式

项目描述

Roifile是一个Python库,用于读取、写入、创建和绘制ImageJ ROI,这是一个未记录且ImageJ应用程序特定的格式,用于存储感兴趣的区域、几何形状、路径、文本等,以便进行图像叠加。

作者

Christoph Gohlke

许可证

BSD 3-Clause

版本

2024.9.15

DOI

10.5281/zenodo.6941603

快速入门

Python包索引安装roifile包及其所有依赖项

python -m pip install -U "roifile[all]"

查看存储在ROI、ZIP或TIFF文件中的叠加

python -m roifile file.roi

请参阅示例以了解如何使用编程接口。

源代码、示例和支持可在GitHub上找到。

需求

此版本已测试以下要求和依赖项(其他版本可能也适用)

修订版

2024.9.15

  • 改进类型。

  • 弃用Python 3.9,支持Python 3.13。

2024.5.24

  • 修复GitHub上无法正确渲染的docstring示例。

2024.3.20

  • 修复ROI生成器 (#9) 的问题。

2024.1.10

  • 支持文本旋转。

  • 改进文本渲染。

  • 避免数组复制。

  • 限制从文件读取的大小。

2023.8.30

  • 修复代码风格问题。

  • 添加py.typed标记。

2023.5.12

  • 改进对象表示和类型提示。

  • 停止支持Python 3.8和numpy < 1.21 (NEP29)。

2023.2.12

  • 延迟zipfile的导入。

  • 在写入时验证坐标形状。

2022.9.19

  • 修复整数坐标到-5000..60536的范围,以符合ImageJ规范(破坏性更改)。

  • 对于超出范围的整数坐标,在frompoints中添加subpixel_coordinates。

2022.7.29

有关旧版本,请参阅CHANGES文件。

注意

ImageJ ROI格式无法存储-5000..60536范围之外的整数坐标值。

有关参考实现,请参阅ImageJ RoiDecoder.java源代码。

其他处理ImageJ ROI的Python包

示例

从一个x,y坐标数组创建一个新的ImagejRoi实例

>>> roi = ImagejRoi.frompoints([[1.1, 2.2], [3.3, 4.4], [5.5, 6.6]])
>>> roi.roitype = ROI_TYPE.POINT
>>> roi.options |= ROI_OPTIONS.SHOW_LABELS

将实例导出为ImageJ ROI格式的字节字符串或文件

>>> out = roi.tobytes()
>>> out[:4]
b'Iout'
>>> roi.tofile('_test.roi')

从文件读取ImageJ ROI并验证内容

>>> roi2 = ImagejRoi.fromfile('_test.roi')
>>> roi2 == roi
True
>>> roi.roitype == ROI_TYPE.POINT
True
>>> roi.subpixelresolution
True
>>> roi.coordinates()
array([[1.1, 2.2],
       [3.3, 4.4],
       [5.5, 6.6]], dtype=float32)
>>> roi.left, roi.top, roi.right, roi.bottom
(1, 2, 7, 8)
>>> roi2.name = 'test'

使用matplotlib绘制ROI

>>> roi.plot()

将ROI写入ZIP文件

>>> roiwrite('_test.zip', [roi, roi2], mode='w')

从ZIP文件读取ROI

>>> rois = roiread('_test.zip')
>>> assert len(rois) == 2 and rois[0] == roi and rois[1].name == 'test'

将ROI写入ImageJ格式的TIFF文件

>>> import tifffile
>>> tifffile.imwrite(
...     '_test.tif',
...     numpy.zeros((9, 9), 'u1'),
...     imagej=True,
...     metadata={'Overlays': [roi.tobytes(), roi2.tobytes()]},
... )

从ImageJ格式的TIFF文件中读取嵌入的ROI

>>> rois = roiread('_test.tif')
>>> assert len(rois) == 2 and rois[0] == roi and rois[1].name == 'test'

从命令行查看存储在ROI、ZIP或TIFF文件中的重叠区域

python -m roifile _test.roi

有关高级示例,请参阅源分布中的roifile_demo.py

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

roifile-2024.9.15.tar.gz (18.4 kB 查看哈希值)

上传时间

构建分布

roifile-2024.9.15-py3-none-any.whl (17.2 kB 查看哈希值)

上传时间 Python 3

由以下支持