当前位置: 首页 > news >正文

Python读取.dat格式数据并转为.png,.jpg,.bmp等可视化格式(附代码)

.dat文件的命名规则没有统一的规定,但通常以.dat为扩展名。

目录

  • 一、 .dat格式数据
    • 1.1 .dat数据用途
    • 1.2 常见的.dat文件格式
    • 1.3 .dat文件示例
  • 二、读取.dat格式数据
    • 2.1 单个.dat文件读取并转换
      • 2.1.1 代码
      • 2.1.2 查看数据
      • 2.1.3 输出查看8Bit图片
    • 2.2 批量.dat文件读取并转换
      • 2.2.1 代码参数修改
      • 2.2.2 代码
      • 2.2.3 批量转换结果
  • 三、总结

一、 .dat格式数据

.dat格式数据是一种通用的二进制文件格式,可以用于存储各种类型的数据。.dat文件的格式可以是任意的,因此需要根据数据的具体格式来编写代码来读取数据。

1.1 .dat数据用途

存储文本数据,例如用户配置信息或日志数据。

存储二进制数据,例如图像数据或音频数据。

存储结构化数据,例如数据库表格。

1.2 常见的.dat文件格式

文本格式:数据以字符串的形式存储。

二进制格式:数据以二进制数据的形式存储。

结构化格式:数据以结构化的形式存储。

注:如果不确定.dat文件的格式,您以尝试使用hex编辑器来查看数据的二进制格式。

1.3 .dat文件示例

用户配置文件:通常用于存储用户的个人偏好或设置。

日志文件:通常用于记录系统或应用程序的运行情况。

图像文件:通常用于存储图像数据。

音频文件:通常用于存储音频数据。

数据库文件:通常用于存储数据库表格的数据。

二、读取.dat格式数据

2.1 单个.dat文件读取并转换

这里主要是使用numpy读取,我自己的.dat文件存放着图像数据,且图像数据的尺寸为256*192,学者在使用该教程中代码时,得提前明确自己的.dat文件是否存储的是图像数据,且明确图像尺寸。

使用代码修改的地方如下:

在这里插入图片描述

2.1.1 代码

import numpy as np
import cv2def float32_to_unit8(img):max_val = img.max()min_val = img.min()img = (img - min_val)/(max_val - min_val) * 255img = img.astype(np.uint8)return imgdat_f = open("data/INF_AiRui/groundtruth/nuc_1879538664.dat")
# 读取数据
data = np.fromfile(dat_f,dtype=np.uint16)# 定义图片的列数和函数
col = 256
row = 192# 将一维data数组转换为二位数组
dataReshape = data.reshape(row,col)# 调用float32_to_unit8函数将16bit数据转为uint8数据
imgUint8 = float32_to_unit8(dataReshape)# 显示uint8图像
cv2.imshow("result_image",imgUint8)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.1.2 查看数据

这里查看数据主要是通过DeBug解析每一步查看,如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.1.3 输出查看8Bit图片

直接运行上面代码后就可以输出单个.dat数据转换后的uint8图片,如下:

在这里插入图片描述

2.2 批量.dat文件读取并转换

2.2.1 代码参数修改

主体代码和上面一样,就加了遍历文件夹的代码,需要修改的地方如下:

在这里插入图片描述

2.2.2 代码

import numpy as np
import cv2
import os
import sysdef float32_to_unit8(img):max_val = img.max()min_val = img.min()img = (img - min_val)/(max_val - min_val) * 255img = img.astype(np.uint8)return imgdat_path = "data/INF_AiRui/groundtruth"
save_path = "data/INF_AiRui_bmp/groundtruth"dat_file = os.listdir(path = dat_path)for file_name in dat_file:dat_f = open(os.path.join(dat_path,file_name))# 读取数据data = np.fromfile(dat_f,dtype=np.uint16)# 定义图片的列数和函数col = 256row = 192# 将一维data数组转换为二位数组dataReshape = data.reshape(row,col)# 调用float32_to_unit8函数将16bit数据转为uint8数据imgUint8 = float32_to_unit8(dataReshape)out_dat_name = file_name[:-4]+".bmp"print("图片{}转换成功!".format(file_name[:-4]))cv2.imwrite(os.path.join(save_path,out_dat_name),imgUint8)key = cv2.waitKey(30) & 0xffif key == 27:sys.exit(0)

2.2.3 批量转换结果

在这里插入图片描述

三、总结

以上就是使用Python读取.dat格式数据并转为.png,.jpg,.bmp等可视化格式的过程及详细代码,本代码转换只适用于.dat存储的是图像数据,其它数据不适用。

总结不易,多多支持,谢谢!

http://www.lryc.cn/news/258434.html

相关文章:

  • matplotlib 默认属性和绘图风格
  • ip地址怎么转化为十进制
  • 【Spring进阶系列丨第五篇】详解Spring中的依赖注入
  • DAP数据集成与算法模型如何结合使用
  • 大数据监控
  • 【C语言】数据结构——小堆实例探究
  • Vue中比较两个JSON对象的差异
  • 前端知识库Html5和CSS3
  • 智能优化算法应用:基于鸡群算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • Apollo配置发布原理解析
  • TrustGeo论文问题理解
  • 子查询在SQL中的应用和实践
  • C# Socket通信从入门到精通(14)——多个异步UDP客户端C#代码实现
  • 【教3妹学编程-算法题】需要添加的硬币的最小数量
  • 【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)
  • 做题总结 707. 设计链表
  • django实现--视图的使用
  • 【dirty cred】fileManager [XXX]
  • 线程按顺序循环执行
  • C# 使用异步委托获取线程返回值
  • 生鲜蔬果展示预约小程序作用是什么
  • 【C++】类与对象(下)
  • 一文了解 Go 方法
  • 【Docker】vxlan的原理与实验
  • 广度(宽度)优先搜素——层层递进
  • 设计模式——建造者模式(创建型)
  • ​getopt --- C 风格的命令行选项解析器​
  • Mysql大数据量删除
  • 【python中类的介绍】
  • PO模式在selenium自动化测试框架有什么好处