python中numpy或opencv溢出小坑

    前几天同事在测试别人代码的时候,发现所测得指标很高,但拿到我写的代码上测试,指标低了不少,究竟是怎么回事呢?原来是别人代码中出现溢出现象。

    接下来我们直接分析代码

img1 = cv2.imread("kodim01.png")
img2 = cv2.imread("kodim01.png")

img3 = (img1 + img2) // 2

cv2.imshow("img3", img3)
cv2.waitKey(0)

    上面这一份代码,一眼看去感觉没有什么bug,还很漂亮的样子(偷偷夸一下我写的,哈哈),结果运行一下,感觉图片被人换了。

    接着看下面一份代码,必定会想明白是什么原因。

img1 = np.array(cv2.imread("kodim01.png"), np.float)
img2 = np.array(cv2.imread("kodim01.png"), np.float)

img3 = (img1 + img2) // 2
img3 = np.array(img3, np.uint8)

cv2.imshow("img3", img3)
cv2.waitKey(0)

    小结:一种类型传到numpy中,如果后面出现溢出现象,numpy不会自动调节类型

猜你喜欢

转载自blog.csdn.net/u013289254/article/details/105868816