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")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/314295.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windos exe 以服务的形式运行(开机运行)

windos 品台编写的 小工具 exe 或者 批处理 .bat 经常需要开机自启动,可以直接把它 加在开启启动项,或者做成 windos服务,这样既可以开机自动启动而且还可以 防止误触关闭掉; windos 以服务启动 exe/bat 的通用方式&#xff1…

Word不同部分(分节)设置页眉和页码的使用指南——附案例操作

Word页眉和页码分节设置的使用指南 目录 Word页眉和页码分节设置的使用指南摘要1. 插入分节符2. 设置不同的页眉3. 设置不同的页码4. 调整页码的起始值5. 删除或更改分节6. 预览和调整 摘要 在撰写word文档时,我们经常需要在不同的部分应用不同的页眉和页码格式。在…

androj studio安装及运行源码

抖音教学视频 目录 1、 jdk安装 2、下载安装androj studio 3 、打开源码安装运行相关组件 4、 安装模拟器 1、 jdk安装 安卓项目也是java开发的,运行在虚拟机上,安装jdk及运行的时候,就会自动生成虚拟机, jdk前面已经讲过&…

宏景eHR 多处 SQL注入漏洞复现

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR view、trainplan_tree.jsp等接口处存在SQL注入漏洞,未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指令,从而窃…

C++力扣题目106,105--中序和后序,前序和中序遍历构造二叉树

106.从中序与后序遍历序列构造二叉树 力扣题目链接(opens new window) 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 中序遍历 inorder [9,3,15,20,7]后序遍历 postorder [9,15,7,20,3] 返回如下的二叉树&am…

从无到有制作docker镜像、容器详细步骤

1、编写一个Dockerfile文件,内容如下 # 基础镜像jdk,jdk里包含里操作系统 FROM openjdk:8u282-jdk# 工作目录,也就是容器里目录 WORKDIR /home/prq/# 添加ppp目录下的文件到容器/home/prq/里 ADD ./ppp /home/prq/# 暴露端口8080 EXPOSE 8080# 启动脚本…

红黑树之概述

红黑树 R-B Tree,全称是 Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性 (1)每个节点或者是黑色&…

从DETR到Mask2Former(1):DETR-segmentation结构全解析

网上关于DETR做的detection的解析很多,但是DETR做Segmentation的几乎没有,本文结合DETR的论文与代码,对DETR做一个详细的拆解。理解DETR是理解Mask2Former的基础。 首先得把DETR-segmentation给run起来。Github上DETR的repository&#xff0…

日常工作中,软件测试人员如何避免“背锅”

作为一名软件测试工程师,日常工作中最常打交道的肯定就是开发和产品经理。有沟通就会问题,有问题难免会有争执。那么你肯定听过这些话: “这么弱智的bug你都测不出来吗?” “为啥这个功能还没测完就上线了?” “研发…

AI生成APP工具推荐:5款让你惊艳的AI应用

在这个数字化、智能化的时代,人工智能(AI)已经深入到我们生活的方方面面。其中,AI生成APP工具更是以其强大的创意和生成能力,成为自媒体人和设计师们的得力助手。本文将为你介绍五款实用的AI生成APP工具,它们将为你的创意打开无限…

Pycharm close project 速度缓慢解决办法

解决Pycharm close project缓慢现象 1.问题描述 close project后需要等待很长的时间。 2.解决办法 在Help -> Find Action -> 输入 Registry -> 禁用ide.await.scope.completion 问题解决!!! 😃😃&#x…

opencv拉流出现missing picture in access unit with size 4错误解决

0、应用场景问题 我们使用opencv作为拉流客户端,获取画面后进行图像处理并推流(使用ffmpeg库)。 opencv解码同样使用ffmpeg库。 我们要求opencv能根据业务不断进行拉流操作,等效的逻辑代码如下: while(1) {printf(&…

YOLOv6s,map值打印成两位小数(原本是显示0.538,变成显示为53.79)

显示结果 更改前: 更改后: 方法 将tools/eval.py中的--do_pr_metric后面改为defaultTrue即可打印出map值原本是显示0.538,变成显示为53.79,方法为👇 在YOLOv6-main/yolov6/core/evaler.py中做如下更改&#xff1a…

揭秘H5与小程序的测试奥秘!

最近接触了较多关于H5页面的测试,H5页面的测试除了业务逻辑功能测试外,其他部分的测试方法基本是可以通用的,在此对H5页面和小程序的一些通用测试方法进行总结分享给大家。 H5优势 H5可以跨平台,开发成本相对较低; H…

代码随想录算法训练营第25天 | 216.组合总和III 17.电话号码的字母组合

目录 216.组合总和III 💡解题思路 回溯三部曲 💻实现代码 17.电话号码的字母组合 💡解题思路 # 数字和字母如何映射 # 回溯法来解决n个for循环的问题 💻实现代码 216.组合总和III 题目链接:216.组合总和III …

必须掌握的100+个Linux命令大全【持续更新中】

别有一番风趣的alias … note:: 寒蝉凄切,对长亭晚,骤雨初歇。 柳永《雨霖铃》 Linux alias命令用于设置指令的别名,可以将比较长的命令进行简化。 默认情况下会输出当前的设置: $ alias lls -lah lals -lAh llls -lh lsls --…

【Docker】Linux中Docker数据管理的数据卷及挂载

目录 一、数据管理 1. 讲述 2. 应用场景 二、数据卷的应用 1. 命令 2. tomcat镜像 3. 挂载数据卷 4. 项目部署在数据卷 三、目录挂载 四、完善Tomcat配置 每篇一获 一、数据管理 1. 讲述 Docker 的数据管理主要涉及到两个方面:数据卷(Volume…

[linux]编译一个ko文件并运行

一、需求 有一段代码需要在运行时加载注入内核中&#xff0c;当用户层需要访问时可以提供内核态环境去运行。 二、c代码构建 // #include <errno.h> // #include <string.h> // #include <stdio.h> // #include <fcntl.h> // #include <stdlib.h…

Docker数据卷与拦截与目录拦截

目录 高级容器挂载技术深度解析引言数据卷挂载原理解析应用场景使用介绍 目录挂载原理解析应用场景使用介绍 总结 高级容器挂载技术深度解析 引言 容器技术的快速发展使得容器挂载技术变得愈发重要。在容器化应用中&#xff0c;数据卷挂载和目录挂载是两种常见的挂载方式&…

SpringMVC 学习博客记录

文章目录 Servlet请求转发和请求包含RequestDispatcher HandlerInterceptor组件实际运用场景 HandlerMapping&RequestMappingInfo(HandlerMapping)HandlerExecutionChainHandlerAdapter源码学习知识点博客记录 Servlet请求转发和请求包含 RequestDispatcher Request#getR…