首页 > 解决方案 > 如何将 .mat 文件转换为 Berkeley Segmentation Dataset 500 中的 .tif 图像?

问题描述

我正在研究“Berkeley Segmentation Dataset 500”,我想查看 ground_truth 图像,但它们是 file.mat,我无法将它们转换为 .tif 或 .jpeg(任何转换都可以)。

我试图检查 file.mat

import scipy.io

mat = scipy.io.loadmat('Dataset/ground_truth/train/2092.mat')

mat 是具有以下键的字典:globalsheaderversiongroundTruth

globals是一个空列表

header是类型bytes,它有大小74和值MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Thu Oct 29 09:24:04 2009

版本是类型str,它有大小3和价值1.0

groundTruth是类型Array of object,它有大小(1, 7)和价值ndarray object of numpy module

我认为基本事实是我正在寻找的图像。

value=mat['groundTruth'][0][0]

值为array of void128, 大小 (1,1) 并且值为ndarray object of numpy module

如果我打印价值,我会得到以下信息:

array([[(array([[ 1,  1,  1, ...,  1,  1,  1],
       [ 1,  1,  1, ...,  1,  1,  1],
       [ 1,  1,  1, ...,  1,  1,  1],
       ...,
       [15, 15, 15, ..., 15, 15, 15],
       [15, 15, 15, ..., 15, 15, 15],
       [15, 15, 15, ..., 15, 15, 15]], dtype=uint16), array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       ...,
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8))]],
      dtype=[('Segmentation', 'O'), ('Boundaries', 'O')])

我认为我关心的图像是第一个,所以我尝试这样做:

segmentation = a['Segmentation']

但是,分割是Array of object,它有大小(1,1),值是ndarray object of numpy module。问题是它有大小 (1,1) 但是当我打印它时,它不是一个单一的值。任何人都可以帮助我吗?我不知道如何处理这些数据

标签: pythonnumpynumpy-ndarray

解决方案


推荐阅读