使用python加载CCITT.3压缩tiff的最佳方法是什么?

2024-04-28 04:36:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将CCITT.3压缩的tiff加载到python中,并从中获取像素矩阵。它应该是一个逻辑矩阵。在

我尝试过使用pylibtiff和PIL,但是当我加载它们时,它返回的矩阵是空的。我在很多地方读到这两个工具支持加载CCITT,但不支持访问像素。在

我愿意转换图像,只要我能从中得到逻辑矩阵,并用python代码进行转换。最疯狂的是,如果我在paint中打开我的一个图像,保存它而不改变它,然后尝试用pylibtiff加载它,它是有效的。油漆重新压缩到LZW压缩。在

所以我想我真正的问题是:有没有一种方法可以将CCITT图像本机加载到矩阵中,或者使用python将图像转换为LZW??在

谢谢

泰勒·海米勒


Tags: 工具方法代码图像pil地方矩阵像素
2条回答

subprocess运行tiffcp来转换成LZW(-c lzw开关),然后用pylibtiff正常处理怎么样?在web上有tiffcp的Windows版本。不完全是Python本机解决方案,但仍然。。。在

似乎最好的方法是不要完全使用Python,而是依靠netpbm

import Image
import ImageFile
import subprocess

tiff = 'test.tiff'
im = Image.open(tiff)
print 'size', im.size
try:
    print 'extrema', im.getextrema()
except IOError as e:
    print 'help!', e, '\n'

print 'I Get by with a Little Help from my Friends'
pbm_proc = subprocess.Popen(['tifftopnm', tiff],
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE)
(pbm_data, pbm_error) = pbm_proc.communicate()
ifp = ImageFile.Parser()
ifp.feed(pbm_data)
im = ifp.close()
print 'conversion message', pbm_error,
print 'extrema', im.getextrema()
print 'size', im.size
# houston: we have an image
im.show()

似乎能做到:

^{pr2}$

相关问题 更多 >