即使图像深度为UInt16,OpenCV / EmguCV上限为255

时间:2017-09-20 21:36:59

标签: c# opencv emgucv

我使用深度为UInt16(ushort)的EmguCV在C#中创建一个图像对象。 然后我用线性渐变填充图像,该值越大,行索引越高。

我不明白的是,值255产生100%的白色像素。但是我已经指定了16位的深度,根据我的理解,应该使用65,535代表白色。我发现的是大于或等于255的所有东西都是白色的。

var image = new Image<Gray, UInt16>(255, 255);
for (int column = 0; column < image.Width; column++)
{
    for (int row = 0; row < image.Height; row++)
    {
        image.Data[row, column, 0] = (UInt16)row;
    }
}
image.Save("temp.jpg");

意外结果:

Gradient

我错过了什么?如何创建一个图像并用0到65,535之间的值填充它,实际上映射到0为黑色,65,535为白色?

1 个答案:

答案 0 :(得分:0)

问题是我保存的JPG格式不支持16位。 PNG确实。

感谢Miki的helpful comment