2010-07-28 1 views
2

Я пытаюсь загрузить сжатый tiff CCITT T.3 в python и получить из него матрицу пикселей. Это должна быть просто логическая матрица.Каков наилучший способ загрузки сжатого tiff CCITT T.3 с использованием python?

Я попытался использовать pylibtiff и PIL, но когда я загружаю его с собой, возвращаемая им матрица пуста. Я читал во многих местах, что эти два инструмента поддерживают загрузку CCITT, но не имеют доступа к пикселям.

Я открыт для преобразования изображения, пока я могу получить из него логическую матрицу и сделать это в коде python. Сумасшедшая вещь заключается в том, что если я открою одно из своих изображений в краске, сохраните его, не изменяя его, а затем попробуйте загрузить его с pylibtiff, он работает. Paint повторно сжимает его до сжатия LZW.

Таким образом, я думаю, что мой реальный вопрос: есть ли способ либо загружать изображения CCITT, либо загружать изображения в матрицу, либо конвертировать изображения в LZW с помощью python?

Спасибо,

tylerthemiler

ответ

1

кажется, лучший способ, чтобы не использовать 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() 

Кажется, сделать трюк:

$ python g3fax.py 
size (1728, 2156) 
extrema help! decoder group3 not available 

I Get by with a Little Help from my Friends 
conversion message tifftopnm: writing PBM file 
extrema (0, 255) 
size (1728, 2156) 
0

Как насчет запуска tiffcp с subprocess для преобразования LZW (-c lzw переключатель), то процесс обычно с pylibtiff? В Интернете есть стропы Windows tiffcp. Не совсем Python-родное решение, но все-таки ...

+0

Я попробовал tiffcp, хотя он был преобразован отлично, изображение все равно не загрузилось должным образом ... Я не знал, что вы можете конвертировать в lzw, хотя ... Я попробую ... вы можете дать мне синтаксис?? – tylerthemiler

+0

@tylerthemiler, никакого специального синтаксиса, просто 'tiffcp -c lzw from.tiff to.tiff'. И ответ msw имеет пример использования подпроцесса. – Constantin

Смежные вопросы