如何在c ++中将调色板设置为灰度

时间:2014-07-28 02:36:07

标签: visual-studio-2010 visual-c++ bitmap palette

我正在从单声道相机中读取实时信号,并且在按下按钮时需要拍摄快照。 因此,当我转换指针时,相机会将我传递给位图(8 bpp)以进行进一步的图像处理, 颜色变得像这样奇怪

weirdly colored image which should be grayscale

我猜它是因为我没有正确设置位图的调色板,所以我用Google搜索了一些 在VB中遇到了一些代码,它将位图的调色板设置为灰度。 我想在Visual Studio 2010下用C ++做同样的事情,只有在C ++中,调色板的构造函数是密封的,因此我无法声明新的灰度调色板然后将其分配给我的位图。

下面是我在Visual Basics中编写的示例代码:

Dim bmpobj As Bitmap
Dim pal As System.Drawing.Imaging.ColorPalette
pal = bmpobj.Palette
For i = 0 To 255
    pal.Entries(i) = Color.FromArgb(i, i, i)
Next
bmpobj.Palette = pal

所以我要问的是:无论如何将我的位图调色板设置为灰度?

1 个答案:

答案 0 :(得分:0)

我认为,只需更改调色板,您的图像就不会变为灰度。

您需要将图像中的每个颜色像素更改为灰度。 algorithms are here