Python OpenCv读取.dat类型图片数据显示并批量转为bmp等图片格式

一、.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图像效果不是最好的,学者根据自己的转换需求修改动态拉伸算法。

感谢您阅读到最后!关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佐咖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值