使用Python,我试图将黑白图像的每个像素转换为十六进制,并将其存储在一个“.txt”文件中。我的应用程序必须使用C语言,这样从文本文件中读取更容易,然后用C代码进行整个转换。我在网上修改了一些示例代码,但我对使用Python还不是很有经验。你知道吗
当我运行python脚本时,它只生成两个十六进制值而不是八个。一开始我以为这是来自黑白图像,但是RGB图像应该包含0x000000
黑色和0xFFFFFF
白色。你知道吗
Python脚本
from binascii import hexlify
import re
hexValNew = ''
placeHolder ='0'
file = open('Frame2.txt', 'w') #Create txt file for data
with open('Frame2.png', 'rb') as f:
binVal = f.read(1)
while len(binVal) != 0:
hexVal = hex(ord(binVal))
hexValNew = hexVal[2:4] #Remove "0x" from hex() process
hexValString = str(hexValNew)
if len(hexValString) == 1:
hexValString = placeHolder + hexValString
print hexVal
#print(hexValString) #Test Line
file.write(hexValString) #Write adjusted hex value to txt file
binVal = f.read(1)
file.close() #Close txt file
第/a.out节
ff 00 62 26 e0 c4 a2 d7 c2 90 00 00 49 45 4e 44 ae 42 60 82
据我所知,返回的值应该是8位,而不仅仅是2位。你知道吗
我建议您不必费心编写任何Python,只需在终端中使用ImageMagick即可将任何PNG、JPEG或其他格式的文件转换为NetPBM格式请参见Wikipedia description.
具体看一下以P2(ASCII)或P5(二进制)格式开始的PGM格式。使用C阅读非常简单。因此,要在终端使用中将PNG图像转换为PGM P2(ASCII)格式,请执行以下操作:
用任何文本编辑器查看你的文件。你知道吗
要将JPEG文件转换为PGM P5(二进制)格式,请使用:
不能打开PNG并将数据视为原始图像数据。例如,PNG的前8个字节称为PNG签名,每个PNG的签名总是相同的。你知道吗
您应该使用Pillow或OpenCV之类的库来打开图像,获取图像数据,并将其以raw格式写入文件。生成一个原始文件比生成一个十六进制字符串的文件要容易得多,您需要在C程序中再次解析它。你知道吗
在Unix上的ImageMagick中,可以执行以下操作:
格式为列,行:十六进制。你知道吗
如果你想的话,你可以把它重定向到一个文件。我不是Windows用户。但是,可能存在与Unix命令类似的Windows命令。如果不是,则可以解析文本:。见https://imagemagick.org/Usage/files/#txt
相关问题 更多 >
编程相关推荐