阅读奥林巴斯(R)图像文件(OIF和OIB)

oiffile的Python项目详细描述


oiffile是一个python库,用于从olympus image读取图像和元数据 格式化文件。oif是olympus fluoview(tm)的本地文件格式 共焦显微镜软件。

格式有两种变体:

  • oif(olympus图像文件)是一种包含主设置的多文件格式 文件(.oif)和与数据和设置文件(.tif, .bmp、.txt、.pyt、.roi和.lut)。
  • oib(olympus image binary)是一个复合文档文件,存储oif和 在单个文件中关联的文件。
Author:Christoph Gohlke
Organization:Laboratory for Fluorescence Dynamics. University of California, Irvine
Version:2019.1.1

修订版

2019.1.1
更新版权年。

注释

api还不稳定,可能会在不同的版本之间发生变化。

不推荐使用Python2.7和3.4。

没有可用的规范文件。

仅使用Olympus FV1000硬件上生成的文件进行测试。

示例

以numpy数组的形式从oib文件中读取图像:

>>> image = imread('test.oib')
>>> image.shape
(3, 256, 256)
>>> image[:, 95, 216]
array([820,  50, 436], dtype=uint16)

从oib文件中的单个tiff文件读取图像:

>>> with OifFile('test.oib') as oib:
...     filename = natural_sorted(oib.glob('*.tif'))[0]
...     image = oib.asarray(filename)
>>> filename
'Storage00001/s_C001.tif'
>>> image[95, 216]
820

访问oib主文件中的信息:

>>> with OifFile('test.oib') as oib:
...     dataname = oib.mainfile['File Info']['DataName']
>>> dataname
'Cell 1 mitoEGFP.oib'

将oib文件内容提取到oif文件和相关数据目录:

>>> tempdir = tempfile.mkdtemp()
>>> oib2oif('test.oib', location=tempdir)
Saving ... done.

从提取的oif文件中读取图像:

>>> oif_filename = '%s/%s.oif' % (tempdir, dataname[:-4])
>>> image = imread(oif_filename)
>>> image[:, 95, 216]
array([820,  50, 436], dtype=uint16)

读取OLE复合文件并访问“oibinfo.txt”设置文件:

>>> with CompoundFile('test.oib') as oib:
...     info = oib.open_file('OibInfo.txt')
>>> info = SettingsFile(info, 'OibInfo.txt')
>>> info['OibSaveInfo']['Version']
'2.0.0.0'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java比较空对象   JavasocketUDP循环   更改活动时使用java“安卓.view.InflateException:二进制XM文件行”   java可以在EclipseRCP中定义ViewPart或Workbench的最小大小吗?   java试图根据用户输入对列表中的整数进行排序   java如何避免Hibernate在oneToMany关系上创建外键限制   java创建一个简单的字符串解析器,交互式外壳式   java如何解析JSON并将其值转换为数组?   JavaAzure:Image Magick提供0 KB的输出?   使用Azure Event Hubs for Apache Kafka生态系统和OAuth在Java中发送和接收消息   java如何将Oracle的Interval数据类型格式化为HH:MM格式?   java jsoup无法在安卓上正确解析HTML   java如何计算2ndArray中的距离?   java Swing Worker线程说在超类中没有Process()方法   带有内部组件的java单击JPanel   javajsp中的html引号转义   java Maven在打包jar时无法检索buildNumber   Java中的linux八进制转义导致错误的字节值,编码问题?