У меня здесь странная проблема.
Я получаю обратно изображение из моей нейронной сети, оно имеет тип dtype float32 . Я добавляю фоновую картинку, которую я взял из интернета, конвертирую ее в float32 из uint8, а затем добавляю свой вывод поверх фоновой картинки.
Теперь я хочу сохранить его, но 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 из моей нейронной сети, поэтому мне приходится с этим работать.