天天看點

opencv-python:建立圖像容器 dtype=np.uint8

opencv-python 建立圖像容器 dtype=np.uint8

今天踩了一個坑,在opencv-python中,若想為圖像建立一個容器,需要指定dtype=np.uint8,否則雖然你的容器矩陣中是有值的,但是無法正常imshow

一、未指定dtype
opencv-python:建立圖像容器 dtype=np.uint8
opencv-python:建立圖像容器 dtype=np.uint8
opencv-python:建立圖像容器 dtype=np.uint8
二、已指定dtype
opencv-python:建立圖像容器 dtype=np.uint8
opencv-python:建立圖像容器 dtype=np.uint8
opencv-python:建立圖像容器 dtype=np.uint8

WTF!WTF!WTF!

另外,需要注意資料溢出問題

因為資料類型為 np.uint8,也就是0~255,是以若計算過程中資料超出了這個範圍,就會造成溢出。

最簡單的,若想實作一個3*3均值濾波器,需要在鄰域内進行累加求均值。這時,若先累加再除以9,那麼會有溢出問題。取而代之地,每次累加都在最後 “//9” 即可。

當然,也可以考慮先把dtype設為float等,最後再強制轉換為np.uint8