2016-09-29 41 views
0

我試圖均衡像這樣一個1個一個通道圖像時CV_8UC1在功能equalizeHist:錯誤:(-215)_src.type()==試圖以均衡一個float64圖像

img = cv2.equalizeHist(img) 

但是,由於這是一個float64 img,我得到以下錯誤:

error: (-215) _src.type() == CV_8UC1 in function equalizeHist

我該如何解決這個問題?

+0

是否可以將其轉換爲8UC1? – Micka

+0

8UC1是一個二維圖像,它只會給我黑白像素?如果是這樣,那麼不幸的是,不。 – syfy

+0

不是整數,範圍從0到255,這是RGB圖像中每個通道的標準範圍。取決於你的問題,損失和精確度是否合適。爲什麼你有float64類型? – Micka

回答

2

函數equalizeHist是圖像的直方圖均衡,僅適用於CV_8UC1類型,它是單通道8位無符號整型。

要將圖像轉換爲此類型,可以使用功能convertTo與目標類型(必須是相同的通道數量)。

確保源圖像具有正確的值範圍,通常浮點圖像被解釋爲0 =黑色和1 =白色,灰色範圍介於兩者之間,而積分圖像被解釋爲0 =黑色和最大值=白色(對於無符號的8位類型,這將是255)。所以你經常需要將你的源圖像乘以255來適應範圍。功能convertTo有一個參數用於在轉換過程中縮放您的值,與手動縮放相比,這可以提高速度。

0

您還可以使用.astype(numpy.uint8)。