将一堆 .dat 文件(图像)转换为 avi 文件?
Converting a bunch of .dat files(images) to an avi file?
我正在研究分析细胞旋转的项目。信息存储在包含细胞图像的 .dat 文件中。我必须将其转换为 tiff 文件,然后将所有图像连接起来以获得 avi 视频。
问题是我没有找到有关 dat 和 tiff 文件的文档。
当我尝试使用 Python 打开 .dat 文件时,我收到此错误消息:
UnicodeDecodeError:'utf-8'编解码器无法解码位置 1 中的字节 0x9f:起始字节无效
相机是Andor Neo5.5 scmos(https://andor.oxinst.com/assets/uploads/products/andor/documents/andor-neo-scmos-specifications.pdf)
这是 .dat 文件的示例:
https://drive.google.com/file/d/180VuU7XO9suUK0v8G1mlQu_ZGRdUHD0z/view?usp=sharing
颜色模式为灰度
Characteristics of the camera
根据AndorSDK和一些逆向工程,38.dat
文件包含一个4字节的整数,指定要跟随的数据长度,后面是Mono12Packed编码的帧数据和一些额外的元数据,全部按 little-endian 字节顺序排列。
来自一系列 .DAT 文件的帧数据可以被解码并写入 multi-page TIFF 文件,而不会丢失精度。 DAT 文件中的一些元数据丢失:
import glob
import numpy
import tifffile
width = 2560
height = 2160
datfiles = glob.glob('*.dat')
with tifffile.TiffWriter('datfiles.tif', bigtiff=False) as tif:
for datfile in datfiles:
data = numpy.fromfile(
datfile,
count=width * height * 3 // 2, # 12 bit packed
offset=4, # 4 byte integer header
dtype=numpy.uint8,
).astype(numpy.uint16)
image = numpy.zeros(width * height, numpy.uint16)
image[0::2] = (data[1::3] & 15) | (data[0::3] << 4)
image[1::2] = (data[1::3] >> 4) | (data[2::3] << 4)
image.shape = height, width
tif.write(
image, photometric='minisblack', compression=None, metadata=None
)
根据帧数据的总大小,使用压缩and/orBigTIFF格式。将帧数据保存为AVI时,会丢失部分数据
我正在研究分析细胞旋转的项目。信息存储在包含细胞图像的 .dat 文件中。我必须将其转换为 tiff 文件,然后将所有图像连接起来以获得 avi 视频。 问题是我没有找到有关 dat 和 tiff 文件的文档。 当我尝试使用 Python 打开 .dat 文件时,我收到此错误消息:
UnicodeDecodeError:'utf-8'编解码器无法解码位置 1 中的字节 0x9f:起始字节无效
相机是Andor Neo5.5 scmos(https://andor.oxinst.com/assets/uploads/products/andor/documents/andor-neo-scmos-specifications.pdf)
这是 .dat 文件的示例:
https://drive.google.com/file/d/180VuU7XO9suUK0v8G1mlQu_ZGRdUHD0z/view?usp=sharing
颜色模式为灰度
Characteristics of the camera
根据AndorSDK和一些逆向工程,38.dat
文件包含一个4字节的整数,指定要跟随的数据长度,后面是Mono12Packed编码的帧数据和一些额外的元数据,全部按 little-endian 字节顺序排列。
来自一系列 .DAT 文件的帧数据可以被解码并写入 multi-page TIFF 文件,而不会丢失精度。 DAT 文件中的一些元数据丢失:
import glob
import numpy
import tifffile
width = 2560
height = 2160
datfiles = glob.glob('*.dat')
with tifffile.TiffWriter('datfiles.tif', bigtiff=False) as tif:
for datfile in datfiles:
data = numpy.fromfile(
datfile,
count=width * height * 3 // 2, # 12 bit packed
offset=4, # 4 byte integer header
dtype=numpy.uint8,
).astype(numpy.uint16)
image = numpy.zeros(width * height, numpy.uint16)
image[0::2] = (data[1::3] & 15) | (data[0::3] << 4)
image[1::2] = (data[1::3] >> 4) | (data[2::3] << 4)
image.shape = height, width
tif.write(
image, photometric='minisblack', compression=None, metadata=None
)
根据帧数据的总大小,使用压缩and/orBigTIFF格式。将帧数据保存为AVI时,会丢失部分数据