0

float 画像を OpenCV に保存する必要があります。@ tomriddle_1234で提案されているように CV8U 画像に変換しても、黒い png が保存されます。

reference.type() = 5
reference.channels() = 1
reference.depth() = 5

画像を 8 ビットまたは 16 ビットに変換して、浮動小数点プロパティを維持しながら imwrite が画像を保存できるようにするにはどうすればよいですか。つまり、保存された画像は、変換/精度の損失により「色が薄くなる」ことはありません。

imshow("5t aligned Mean", reference); //Displays the correct image
//reference.convertTo(reference, CV_8U); //Convert image to 8Bit INCORRECT
reference.convertTo(reference, CV_8U, 255.0, 1/255.0); //Correct image
imwrite(subject.c_str(), reference); //Stores a completely black png

どんな提案でも大歓迎です!

4

2 に答える 2

2

各floatピクセルに2^16-1を掛けることで、16ビットに変換できます。浮動小数点画像は、範囲[0,2^16-1]にマップする[0,1]の間の値で保存されます。

opencvは、通常のimwrite()を使用して16ビットを非圧縮でPNGおよびTIFFに保存します。

(16ビットjpegを読み取るものを見つけることができませんでしたが、JPEGとしても保存されます)

于 2013-01-31T04:57:19.220 に答える
1

CV_NORM_MINMAXを使用して0から255の間で変換する前に、画像を正規化します

于 2013-01-31T00:10:02.297 に答える