天天看点

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