我们正在使用OpenCV和Emgu 2.4.9包装器。
当我们将Image<Gray,float>
转换为Image<Gray,Byte>
(使用convert<Gray,Byte>()
)时,亮度/对比度会降低。
我们使用Image<Gray,Byte>
进行显示,暂时使用Image<Gray,float>
进行处理(例如卷积)。
但是,当Image<Gray,float>
保存为JPEG时,我会看到所需的强度/亮度等级。
当我检查Image.Save()
方法时,它看起来最终最终调用OpenCV imwrite_()函数,后者又将Float图像转换为字节格式:'image.convertTo(temp,CV_8U);'< / p>
因此,当Image<Gray,float>
保存为JPEG时,我希望强度等级降低。但它没有(即使是相同的convertTo()方法,它反过来调用OpenCV cvt_()函数)。
但是,当转换为Byte并保存亮度/对比度的浮动图像减少时。
在这两种情况下,我相信,saturate_cast<>
会被调用。
此处的相关问题:Emgu image conversion from Image<Gray,float> to Image<Gray,Byte> results in intensity loss?
从Image<Gray,float>
转换为Image<Gray,Byte>
时,是否有人能够描述正在发生的事情以及如何保持亮度/强度?