2013-07-08 6 views
3

У меня есть 4-полосное многоканальное изображение (TIF), которое представляет собой неподписанное 16-битное изображение. Я использую следующие:Откройте многоканальное изображение в Python OpenCV2

opencv2 
    python 

Я сделал следующее в начале моего кода

import cv2 

Когда я использую

i = cv2.imread('img.tif') 

он читает все четыре группы, но, как UINT8. Когда я использую

i = cv2.imread('img.tif', cv2.CV_16U) 

он читает только один канал изображения. Что нужно сделать, чтобы прочитать все четыре канала в 16 бит без знака?

+2

http://stackoverflow.com/a/9781142/749973 –

+0

Спасибо за помощь, но я задал вопрос, связанный с Python! – Indian

ответ

1

Попробуйте передать флаг cv2.IMREAD_ANYDEPTH. В documentation государства этот флаг будет:

Если установлено, возвращение 16 бит/32-битное изображение, когда вход имеет соответствующую глубину, в противном случае преобразовать его в 8-бит.

i = cv2.imread('img.tif', flags=cv2.IMREAD_ANYDEPTH) 

Если это не сработает, попробуйте вместо этого cv2.IMREAD_UNCHANGED флага. Он не документирован, но похоже, что он также может работать.

+0

Nope это. ** нет ** произведение. Мое изображение загружается, но только один канал! Я перекрестил это с Matlab, где мое изображение загружается как канал UINT16/4. – Indian

+0

Похоже, что 'GDAL' из' osgeo' работает лучше с точки зрения чтения изображений. – Indian

+0

@ Индийский Вы попробовали флаг 'IMREAD_UNCHANGED'? Меня устраивает. – Aurelius

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