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不會自動調節類型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章