我有一个文件,其中包含一个240x320的图像,但是它的字节格式是我在一个十六进制编辑器中打开的,并得到了类似16列4800原始数组的内容。
这是我的新手,这就是为什么我遇到麻烦时曾尝试使用python脚本,但是在第17行给出了错误,数据为columnvector [0] [i]:
IndexError:列表索引超出范围。
我尝试了Java代码,但是那也是一个错误,我想尝试一些C#代码,但是我发现的所有代码都没有解释我如何将文件输入代码。这是python代码
import csv
import sys
import binascii
csv.field_size_limit(500 * 1024 * 1024)
columnvector = []
with open('T1.csv', 'r') as csvfile:
csvreader = csv.reader(csvfile,delimiter=' ', quotechar='|')
for row in csvreader:
columnvector.append(row)
headers =['42','4D','36','84','03','00','00','00','00','00','36','00','00','00','28','00','00','00',
'40','01','00','00','F0','00','00','00','01','00','18','00','00','00','00','00','00','84','03','00','C5','00',
'00','00','C5','00','00','00','00','00','00','00','00','00','00','00']
hexArray=[]
for i in range(0,76800):
data = columnvector[0][i]
hexArray.extend([data,data,data])
with open('T1.txt', 'wb') as f:
f.write(binascii.unhexlify(''.join(headers)))
f.write(binascii.unhexlify(''.join(hexArray)))
我想使用任何方法将文件转换为图像,老实说,我不在乎使用哪种方法,只要它能完成工作即可。
答案 0 :(得分:1)
您可以在不编写任何Python的情况下将二进制数据转换为图像,只需在终端中使用 ImageMagick 。它包含在大多数Linux发行版中,并且可用于macOS和Windows。
如果您的图片为320x240,则应为:
由于您的图像是76800,我假设它们是灰度的。
因此,在终端中,要将原始数据转换为JPEG,请使用:
magick -depth 8 -size 320x240 gray:T1 result.jpg
或者,如果您使用的是 ImageMagick 的第6版,请使用:
convert -depth 8 -size 320x240 gray:T1 result.jpg
如果您想要具有自动对比度拉伸功能的PNG,请使用:
magick -depth 8 -size 320x240 gray:T1 -auto-level result.png
不幸的是,您的图像都没有出现任何明智的现象。例如,这是T1:
直方图看起来确实有些明智:
我认为您从根本上错了,因此我将尝试恢复至第一原理进行调试。我会把手电筒照进去,或者将相机对准窗户,保存一张名为bright.dat
的图片,然后用黑卡遮盖镜头,再拍摄一张名为dark.dat
的图像。然后,我将绘制数据的直方图,看看亮的是否在最右端,暗的是否在最左端。制作如下的直方图:
magick -depth 8 -size 320x240 Gray:bright.dat histogram:brightHist.png
和:
magick -depth 8 -size 320x240 Gray:dark.dat histogram:darkHist.png
答案 1 :(得分:0)
c4che/_cache.py
是一个硬编码的值,并且由于for i in range(0,76800):
没有那么多的值,因此您可以得到columnvector[0][i]
考虑为什么需要将范围设置为0-76800,或者为什么该值可以从某物的IndexError: list index out of range.
动态获取。
答案 2 :(得分:0)
从二进制文件制作图像的另一种简单方法是将其转换为NetPBM图像。
由于文件为320x240和8位二进制灰度,因此您只需要在其中包含该信息的标头并附加二进制文件即可:
printf "P5\n320 240\n255\n" > image.pgm
cat T1 >> image.pgm
您现在可以使用image.pgm
, Photoshop , GIMP 或许多其他图像查看器打开feh
。