如何在Python中读取16个无符号整数(16 uint)jpeg文件
我想知道怎么在Python中读取16个无符号整数的jpeg图片。请推荐一些可以读取这种文件的库。我试过了matplotlib、scipy、scikit-image、medpy、Pil、opencv和numpy这些库。
raise IOError("cannot identify image file")
IOError: cannot identify image file
但是使用这些库的时候,我得到的输出是:
请帮帮我。
可以从这个链接找到文件:
https://drive.google.com/file/d/0B4l5GiM7kBXraDEyMXdseENfUlE/edit?usp=sharing
2 个回答
0
这是16位灰度无损JPEG的标准(推荐使用ITU-T T.81)。现在已经被JPEG-LS和JPEG-2000取代。
这种特定类型的JPEG只使用一个通道的灰度,宽度为16位,而不是像RGB那样有三个通道,每个通道占8位,总共24位。
可以尝试使用thorfdbg的libjpeg库,因为它支持这种旧的JPEG标准:https://github.com/thorfdbg/libjpeg
3
说到16位的JPEG图片,听起来有点奇怪,因为JPEG标准其实不支持16位的图片。不过,它是支持12位的图片的。可惜的是,大多数查看器只支持常见的8位每像素的RGB图片,所以即使是12位的图片,使用起来也可能会有点困难。
一个有用的测试方法是试试:
hdr = open("myimage.jpeg", "rb").read(2)
print "{:02x} {:02x}".format(ord(hdr[0]), ord(hdr[1]))
如果你的文件是JPEG格式的,它应该以以下内容开头:
ff d8
如果你没有看到这些内容,那这个文件可能不是JPEG格式的。你有没有什么程序可以用来打开这个文件?是哪个程序生成了这些文件呢?