2013-08-01 242 views
2

我正在從顯微鏡的圖像科學地工作,其中3個RGB通道的每一個都編碼爲uint16(0-65536)。目前我使用OpenCV2和NumPy的與圖像工作,並使用標誌「cv2.IMREAD_UNCHANGED」一切正常與讀取,我可以做在圖像上的一些工作,並返回到UINT16,Python:如何用16位通道保存圖像(例如48 RGB)?

img = cv2.imread('dummy.tif',cv2.IMREAD_UNCHANGED) 
#do some work here 
img = img.astype(numpy.uint16) 
cv2.imwrite('processed.tif',img) 

但是,到目前爲止,我似乎無法找到任何方法將處理後的圖像再次保存爲16位RGB。使用cv2.imwrite命令將圖像轉換爲uint8,從而將所有內容都變成白色(即,所有內容都被截斷爲255,即uint8通道的最大值)。

任何想法如何進行?

回答

1

OpenCV支持寫入16位TIFF圖像。

確保您使用的是當前版本(> = 2.2)。

在使用OpenCV進行保存之前,截斷可能發生在您的代碼中。

+0

你是100%正確的 - 我不小心將我的圖像保存爲.bmp,因此丟失了16位...愚蠢的錯誤=) – Bjarke

1

也許它有幫助,如果numpy.uint16被cv2.CV_16U取代。 在一些示例中,參數作爲字符串傳入,例如'UINT16'。

Sry,聲譽太低的評論。

相關問題