【发布时间】:2014-10-25 08:56:16
【问题描述】:
我有一些图像想要使用 python 脚本进行分析。 它们存储为原始二进制数据文件。它们采用以下格式。 16 位无符号、大端、592x600 像素,带有 520 字节标题。
当我在我的操作系统 (OS X yosemite) 中查看 .dat 文件时,我发现该文件是 710,920 字节
这是有道理的,因为(592 x 600 像素)*(每像素 2 字节)= 710,400 字节。因此剩下的就是 520 字节的头部。
我想编写一个快速的 Python 脚本来生成像素值数组。即我想放弃文件的标题并将其余数据存储为数组,以便我可以使用 PIL 之类的东西快速转换为图像并输出 jpg 或 png。
只是做一些非常快的事情:
myfile = open('test.dat', 'rb')
data = myfile.read()
len(data)
trimdata = data[520:]
len(trimdata)
这给了我没有标题的原始数据。
从这里我不确定将数据解析为 592x600 数组的最简单方法,然后我可以将其与 PIL 一起使用以导出快速灰度图像。
这里是文件的链接,可以帮助您: test.dat
编辑:感谢所有帮助 - 看来数据毕竟是 Little Endian 而不是 Big Endian。干杯。
【问题讨论】:
-
您只是对如何转换图像或如何在 Python 中进行转换感兴趣?
-
我对学习如何在 python 中做这件事特别感兴趣。我一直在用 python 进行大量图像分析和计算,数据相似,但这是我第一次收集原始格式的数据集。能够使用 imagemagick 快速处理它们以吐出 png 或 jpg 非常棒,但最后我希望能够将数据作为像素值数组输入 python,这样我就可以对数据进行一些计算.感谢您提供有关使用 struct 的提示 - 我今晚会研究一下!
-
测试数据的原始链接已损坏。该数据的样例将有助于增加此问题的价值。
标签: python image image-processing python-imaging-library