2013-07-08 40 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

不,這不**工作。我的圖片加載但只有一個頻道!我已經與Matlab交叉驗證了這一點,其中我的圖像加載爲UINT16/4通道。 – Indian

+0

看起來'osgeo'上的'GDAL'在閱讀圖像方面效果更好。 – Indian

+0

@印度您是否嘗試過'IMREAD_UNCHANGED'國旗?這個對我有用。 – Aurelius