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