Python读取.dat格式数据并转为.png,.jpg,.bmp等可视化格式(附代码)_dat恢复成jpg源码-程序员宅基地

技术标签: python  数据分析  numpy  Python OpenCv  opencv  

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

一、 .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 cv2

def float32_to_unit8(img):
    max_val = img.max()
    min_val = img.min()

    img = (img - min_val)/(max_val - min_val) * 255
    img = img.astype(np.uint8)
    return img

dat_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 sys

def float32_to_unit8(img):
    max_val = img.max()
    min_val = img.min()

    img = (img - min_val)/(max_val - min_val) * 255
    img = img.astype(np.uint8)
    return img

dat_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 = 256
    row = 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) & 0xff
    if key == 27:
        sys.exit(0)

2.2.3 批量转换结果

在这里插入图片描述

三、总结

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40280673/article/details/134947164

智能推荐

计算机网络基础知识整理-程序员宅基地

文章浏览阅读10w+次,点赞482次,收藏3.2k次。参考书目:计算机网络(第6版 谢希仁)一、概述1、三网:电信网络、有线电视网络和计算机网络2、电路交换、报文交换、分组交换的比较电路交换公共电话网(PSTN网)和移动网(包括GSM和CDMA网)采用的都是电路交换技术,它的基本特点是采用面向连接的方式,在双方进行通信之前,需要为通信双方分配一条具有固定宽带的通信电路,通信双方在通信过程中一直占用所分配的资源,直到通信结束,并且在电..._计算机网络基础

【Python系列】Python基础语法轻松入门—从变量到循环-程序员宅基地

文章浏览阅读1.5w次,点赞77次,收藏89次。Python 是一种高级、解释型的编程语言,具有简单易学、可读性强、开发效率高等特点。本文将介绍 Python 的基础语法,包括变量、数据类型、运算符、条件语句、循环语句等,并提供相应的示例代码。

制做自己的马赛克微信头像_马赛克头像生成-程序员宅基地

文章浏览阅读1.5w次。CSDN的排版太难用了,建议大家看回我个人博客上的原文想法2013年接近尾声了,有的媒体会用马赛克的方式,把一年中的大事件汇集到一张图片上。印象中天才少年Matrix67曾试用Mathematica制作过自己马赛克头像,于是便有了用微信朋友圈里的图片来制作一个自己的微信头像。马赛克头像觉得不像我,可以离开座位,退后一点,离显示器远点看这张图片。动手_马赛克头像生成

计算机二级试题及分值分布,计算机二级各部分分值分布-程序员宅基地

文章浏览阅读8.4k次。计算机二级考试分选择题和操作题两大类,其中选择题10题,每题2分,一共20分;操作题分字处理题、电子表格题、演示文稿题三大类,其中字处理题30分,电子表格题30分,演示文稿题20分,共计80分。计算机二级各科目考试题型及分值二级 MS Office 高级应用单项选择题 20分(含公共基础知识部分10分)文字处理题(word)30分电子表格题(excel)30分演示文稿题(powerpoint)20..._计算机二级wps真题4分值

误差评价:均方根值(RMS)+ 均方根误差(RMSE)+标准差(Standard Deviation)_均方根误差评价-程序员宅基地

文章浏览阅读1.2w次。1、均方根值(RMS)也称作为效值,它的计算方法是先平方、再平均、然后开方。 2、均方根误差,它是观测值与真值偏差的平方和观测次数n比值的平方根,在实际测量中,观测次数n总是有限的,真值只能用最可信赖(最佳)值来代替.方根误差对一组测量中的特大或特小误差反映非常敏感,所以,均方根误差能够很好地反映出测量的精密度。均方根误差,当对某一量进行甚多次的测量时,取这一测量列真误差的均方_均方根误差评价

Houdini常用SOP节点_houdini cube划分-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏38次。Houdini常用SOP节点_houdini cube划分

随便推点

ROI Pooling和ROI Align_python roi align pooling-程序员宅基地

文章浏览阅读59次。ROI Pooling和ROI Align_python roi align pooling

vue导出自定义的excel表格_vue中导出自定义表格-程序员宅基地

文章浏览阅读535次。vue,结合file-saver、xlsx,导出excel,并对导出前的excel进行自定义,比如文字大小、颜色、单元格宽度、单元格合并等_vue中导出自定义表格

forager有多少个机器人_同花顺外呼机器人助力中国移动开启“人工智能”新营销...-程序员宅基地

文章浏览阅读238次。传统电话营销转型“人工智能”2018年9月底,同花顺为中国移动某地分公司量身定制的智能外呼机器人正式上线,开启全新的电话营销模式,标志着该移动公司从传统的人工电话营销成功转型为“人工智能”新营销。同花顺智能外呼机器人是一个可以代替真人,自动拨打电话的智能语音系统,一个电话机器人一天外呼量能够达到800-1000个,并能根据跟客户的交流情况,自动筛选意向客户。产品适用于证券、金融、房产、保险、催收、..._中国移动智能外呼

SFTP的使用-程序员宅基地

文章浏览阅读161次。SFTP的使用:1.项目中需要引入jar包,下载地址:https://sourceforge.net/projects/jsch/files/jsch.jar/2.需要下载SFTP服务器,下载地址:http://www.freesshd.com/?ctt=download 服务器的配置参考:http://www.cnblogs.com/zxx-813/p/7353806.html、..._sftpattrsapi

高仿微信图片选择器----LQRImagePicker_com.lqr.imagepicker-程序员宅基地

文章浏览阅读844次。LQRImagePicker完全仿微信的图片选择,并且提供了多种图片加载接口,选择图片后可以旋转,可以裁剪成矩形或圆形,可以配置各种其他的参数github地址:https://github.com/GitLqr/LQRImagePicker一、简述:本项目是基于ImagePicker完善及界面修改。主要工作:原项目中UI方面与微信有明显差别,如:文件夹选择菜单的样式就不是很美观..._com.lqr.imagepicker

Elasticsearch专栏-8.es读写性能及优化_es 优化大量写性能-程序员宅基地

文章浏览阅读6.6k次,点赞5次,收藏18次。es读写性能及优化_es 优化大量写性能

推荐文章

热门文章

相关标签