簡體   English   中英

如何將numpy數組更改為灰度opencv圖像

[英]How to change numpy array into grayscale opencv image

如何在python中將numpy數組更改為灰度opencv圖像? 經過一些處理,我得到了一個具有以下屬性的數組:最大值為:0.99999999988,最小值為 8.269656407e-08,類型為: <type 'numpy.ndarray'> 我可以使用cv2.imshow()函數將其顯示為圖像,但我無法將其傳遞給cv2.AdaptiveTreshold()函數,因為它的類型錯誤:

error: (-215) src.type() == CV_8UC1 in function cv::adaptiveThreshold

如何將此 np.array 轉換為正確的格式?

正如斷言所述, adaptiveThreshold()需要單通道 8 位圖像。

假設您的浮點圖像范圍從 0 到 1,這似乎是這種情況,您可以通過乘以 255 並轉換為np.uint8來轉換圖像:

float_img = np.random.random((4,4))
im = np.array(float_img * 255, dtype = np.uint8)
threshed = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, 0)

這個對我有用:

uint_img = np.array(float_arr*255).astype('uint8')

grayImage = cv2.cvtColor(uint_img, cv2.COLOR_GRAY2BGR)

我需要將閉合圖像(形態閉合)轉換為二進制,並在檢查@Aurelius 解決方案后,這比提到的解決方案更適合我。

Python cv2.CV_8UC1() 示例

mask_gray = cv2.normalize(src=mask_gray, dst=None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM