目录
一、.dat数据
.dat是一种通用数据文件格式,可用于存储各种类型的信息,包括文本、图像、音频、视频和其他二进制数据。它没有特定的文件格式规范,因此任何类型的文件都可以保存为 .dat 文件。
.dat 文件通常由特定应用程序创建,并用于存储该应用程序的专有数据。例如,视频编辑软件可能会使用 .dat 文件来存储视频项目信息,而数据库软件可能会使用 .dat 文件来存储数据库数据。
由于 .dat 文件没有标准格式,因此通常无法使用通用文件查看器打开它们。要打开 .dat 文件,您通常需要使用创建它的应用程序或兼容的应用程序。
1.1 常见类型的 .dat 文件
视频文件: 一些视频格式,例如 VCD,使用 .dat 扩展名来存储视频数据。
音频文件: 一些音频格式,例如 ADPCM,使用 .dat 扩展名来存储音频数据。
图像文件: 一些图像格式,例如 RAW,使用 .dat 扩展名来存储图像数据。
游戏文件: 一些游戏使用 .dat 文件来存储游戏数据,例如保存游戏或游戏配置。
应用程序数据文件: 许多应用程序使用 .dat 文件来存储应用程序数据,例如配置文件或设置。
二、单帧图像.dat数据显示
2.1 代码
Python OpenCv读取.dat类型图片数据并显示
具体代码见下:
import cv2
import numpy as np
import matplotlib.pyplot as plt
#加载nuc数据
col = 256 #列
row = 192 #行
path = "Image/DatFile/0001.dat"
img = np.fromfile(path,dtype=np.uint16)
img1 = img.reshape(row,col)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 坐标图像中显示中文
plt.rcParams['axes.unicode_minus'] = False
plt.figure("显示图像",figsize=(10,20)) #构建窗口
plt.subplot(1,1,1),plt.title("原始图像"),plt.imshow(img1,cmap='gray')
plt.tight_layout() #自动调整子绘图参数,以提供指定的填充
plt.show()
2.2 显示结果
显示效果如下:
三、批量将.dat数据转为图片格式
3.1 参数修改
使用代码需要修改的参数见下:
3.2 代码
import cv2
import numpy as np
import os
#加载nuc数据
col = 256 #列
row = 192 #行
input_path = "Images/AiRui_NoiseImages/noise"
output_path = "Images/AiRui_NoiseImages_bmp/noise_bmp"
# 获取文件夹中所有的文件
file_list = os.listdir(input_path)
# 遍历文件列表
for file_name in file_list:
file_path = os.path.join(input_path,file_name)
img_uint16 = np.fromfile(file_path,dtype=np.uint16)
img_uint8 = ((img_uint16 - img_uint16.min()) / (img_uint16.max() - img_uint16.min()) * 255).astype(np.uint8) # 将16bit数据通过线性拉伸映射到8bit
img_rusult = img_uint8.reshape(row,col)
print(file_name)
# 将转换后的图像保存到指定路径中
output_file = file_name[:-4]+".bmp"
cv2.imwrite(os.path.join(output_path,output_file),img_rusult)
print("#############已全部转换成功##################")
3.3 转换效果
四、总结
以上就是使用Python OpenCv读取.dat类型图片数据显示并批量转为bmp等图片格式的详细过程,批量转换代码从16bit到8bit过程,选用了线性动态拉伸算法,此算法弊端较多,转后的8bit图像效果不是最好的,学者根据自己的转换需求修改动态拉伸算法。
感谢您阅读到最后!关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!