[英]How to write a float32 picture to video file in OpenCV2?
我在這里遇到一個奇怪的問題。 我從神經網絡取回了一個輸出圖像,它的dtype是float32 。 我添加了從互聯網上拍攝的背景圖片,將其從uint8轉換為float32,然后將輸出添加到背景圖片的頂部。 現在,我想保存它,但是cv2.VideoWriter.write(blahblah)只接受uint8 。 我以為將float32轉換為uint8會做* 255 ,但這可能是錯誤的,因為我遇到一些奇怪的眩光(我的圖片可以在這里找到: OpenCV圖像在用* 255進行非標准化后顯示了怪異的眩光 )這樣做可能是由於浮點經典錯誤或類似性質的事情。 那么,如何安全地將float32轉換為uint8? 或者,如何將float32寫入文件?
老實說,我對某些事情感到很困惑。 我知道uint8是[0,255],float32是[0,1],而且我知道cv2.videowriter.write接受uint8就是這樣。 在旁注中,一個解決方案似乎是從一開始就將所有內容都更改為.astype(uint8),但是我的神經網絡吐出了float32,所以我必須使用它。
Float32不會設置為0到1,這是您的神經網絡最有可能完成的操作(softmax或sigmoid作為最后的激活函數)。 要將某項設置為其他范圍,可以使用以下方法:
normalized_array = (array - np.min(array))/(np.max(array) - np.min(array)) # this set the range from 0 till 1
img_array = (normalized_array * 255).astype(np.uint8) # set is to a range from 0 till 255
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.