繁体   English   中英

OpenCV写入一个浮动图像,要使用哪种转换?

[英]OpenCV imwrite a float image, which conversion to use?

我需要在OpenCV中存储浮动图像。 按照@ tomriddle_1234的建议将其转换为CV8U图像仍会存储黑色png。

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

我如何将图像转换为8bit或16bit,以便imwrite可以存储图像,同时保持其float属性,即:由于转换/精度损失,存储的图像不会“褪色”!

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

任何建议,不胜感激!

您可以通过将每个浮动像素乘以2 ^ 16来转换为16位。 浮点图像的存储值介于0-1之间

opencv将使用正常的imwrite()将16位未压缩的内容保存在PNG和TIFF中。

(尽管我运气不好,无法找到读取16位jpeg的内容,但也会将它们另存为JPEG)

使用CV_NORM_MINMAX在0到255之间转换之前对图像进行归一化

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM