opencv-python 创建图像容器 dtype=np.uint8
今天踩了一个坑,在opencv-python中,若想为图像创建一个容器,需要指定dtype=np.uint8,否则虽然你的容器矩阵中是有值的,但是无法正常imshow
一、未指定dtype
二、已指定dtype
WTF!WTF!WTF!
另外,需要注意数据溢出问题
因为数据类型为 np.uint8,也就是0~255,所以若计算过程中数据超出了这个范围,就会造成溢出。
最简单的,若想实现一个3*3均值滤波器,需要在邻域内进行累加求均值。这时,若先累加再除以9,那么会有溢出问题。取而代之地,每次累加都在最后 “//9” 即可。
当然,也可以考虑先把dtype设为float等,最后再强制转换为np.uint8