【问题标题】:How to convert 256 color image to 16 color image with Emgu CV, C#?如何使用 Emgu CV、C# 将 256 色图像转换为 16 色图像?
【发布时间】:2021-04-22 11:21:15
【问题描述】:

我正在使用 C# Emgu CV 将 256 色图像转换为 16 色图像。

我可以读取图像数据。

Image<Gray, Byte> img = new Image<Gray, Byte>("test01.bmp");

我可以找到转换函数。

Image<Gray, Byte> img2 = img.Convert(Gray, Byte);

这里,第二个参数是图像的深度。我想将它设置为 4。但是参数的可用值如下所示。

Byte, SByte, Single, double, UInt16, Int16 or Int32

我该如何解决这个问题?

【问题讨论】:

    标签: c# .net image-processing emgucv


    【解决方案1】:

    在您给出的示例中,您将彩色图像转换为灰度图像。灰度图像不是 256 色图像。 256 色图像使用无符号字节作为调色板的索引。一个 16 色图像只需要 4 位来提供 16 色调色板的索引。我怀疑 16 色图像的每个像素仍然由无符号字节的低 4 位表示。可以将 2 个像素打包成一个字节,但我不知道有任何系统可以这样做。

    底线是您不想将转换后的图像的深度设置为 4,您想使用字节,因为 256 色图像需要 8 位。我知道 EmguCV 中没有例程可以将 256 色图像转换为 16 色图像。

    如果您不是调色板,那么您将需要对图像进行量化。有很多关于这个过程的好文章。 This 包含一些非常好的例子。

    道格

    【讨论】:

      猜你喜欢
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 2014-01-26
      • 2017-12-24
      • 2016-11-25
      • 1970-01-01
      • 2015-03-08
      相关资源
      最近更新 更多