簡體   English   中英

如何在OpenCV2中將float32圖片寫入視頻文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM