python numpy中astype使用不當導致圖像出現artifact


在網絡訓練中,發現生成的圖像不對勁,如下面左圖所示,文字完全不對。后來發現,是因為在python中把float類型的變量直接轉成uint8的時候,負數部分就變成了極大的整數,變成了圖中的白點。應該是采用截斷的方法,把小於0大於255的都截斷,然后再轉換成uint8。得到的結果如右圖所示。

 一段驗證性的代碼,如果把a轉成uint8,我們會發現-5就變成了(256-5)=251,而300就變成了(300-256)=44。所謂白色的地方出現了黑點,而黑字上也有了白點。

import numpy as np

a = [-5, -10, 240, 300]

a = np.reshape(a,[4,1])

b = a.astype(np.uint8)

  

print(a)
[[ -5]
 [-10]
 [240]
 [300]]

print(b)
[[251]
 [246]
 [240]
 [ 44]]

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM