mat数据格式转png

目的

多个.mat数据格式转化成多个文件夹下的png图片格式
即 一个PAT.mat文件,生成一个PAT文件夹下的图片

在这里插入图片描述

方法

1 单文件处理

import scipy.io as scio
from PIL import Image
import numpy as np

def MatrixToImage(data):
    data = data*255
    new_im = Image.fromarray(data.astype(np.uint8))
    return new_im

path = 'PAT001.mat'
mat_data = scio.loadmat(path)
# 读取的mat以dict格式保存,因此需要查看一下数据的key值
print(type(mat_data), mat_data)  
data = mat_data["Mask"]  # 这里的是Mask,不同的mat值需要输出一下看一下
for j in range(data.shape[2]):
    new_im = MatrixToImage(data[:,:,j])
    new_im.save(f"pngdata/PAT_{
     j}.png")

注意点:
在这里插入图片描述
结果:
在这里插入图片描述

2 多文件处理

# 生成的数据放在各自的文件夹中
import scipy.io as scio
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import os

# 根据自己任务指定文件夹的前缀和范围
folder_prefix = "PAT"
start_number = 1
end_number = 35

# 循环创建文件夹
for i in range(start_number, end_number + 1):
    # 使用zfill方法来保证文件夹名称的固定长度
    folder_name = f"{
     folder_prefix}{
     str(i).zfill(3)}"
    # 使用os.makedirs来创建文件夹,exist_ok=True表示如果文件夹已存在则不会引发错误
    os.makedirs(folder_name, exist_ok=True)

# 生成图片名称,因为mat数据格式都有顺序
# 从1-100和从001到100的命名方式对图片的影响不同
def format_numbers(start, end, width=3):
    return [f"{
     num:0{
     width}}" for num in range(start, end + 1)]
# 生成mat的id
id = format_numbers(1,35,3)
# 生成png的名字id
save_id = format_numbers(1,1000,4)

# 二值数据转到0-255范围(可见)
def MatrixToImage(data):
    data = data*255
    new_im = Image.fromarray(data.astype(np.uint8))
    return new_im

for i in id:
    name = f"PAT{
     i}.mat"
    path = name
    mat_data = scio.loadmat(path)
    data = mat_data["Mask"]  # 这里是根据自己mat文件中提取数值
    for j in range(data.shape[2]):
        new_im = MatrixToImage(data[:,:,j])
        save_name = save_id[j]
        new_im.save(f"PAT{
     i}/PAT{
     i}D{
     save_name}.png")

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-12 22:58:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-12 22:58:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-12 22:58:05       82 阅读
  4. Python语言-面向对象

    2024-01-12 22:58:05       91 阅读

热门阅读

  1. 网络常用命令

    2024-01-12 22:58:05       44 阅读
  2. QML使用QCustomPlot笔记

    2024-01-12 22:58:05       52 阅读
  3. Android 13.0 Settings搜索功能屏蔽某个app

    2024-01-12 22:58:05       53 阅读
  4. c yuv422转yuv420p

    2024-01-12 22:58:05       54 阅读
  5. 力扣2085.统计出现过一次的公共字符串

    2024-01-12 22:58:05       56 阅读
  6. Redis面试题10

    2024-01-12 22:58:05       50 阅读
  7. 解决大模型的幻觉问题:一种全新的视角

    2024-01-12 22:58:05       56 阅读