Как настроить палитру в оттенках серого в С++

Я читаю прямую трансляцию с монокамеры, и мне нужно сделать снимок при нажатии кнопки. Поэтому, когда я конвертирую указатель, камера передает мне растровое изображение (8 бит на пиксель) для дальнейшей обработки изображения, цвета становятся странными, как это

странно окрашенное изображение, которое должно быть в оттенках серого

Я предполагаю, что это потому, что я неправильно установил палитру растрового изображения, поэтому я погуглил и наткнулся на код в VB, который устанавливает цветовую палитру растрового изображения в оттенки серого. Я хочу сделать то же самое на С++ в Visual Studio 2010, только в С++ конструктор цветовой палитры запечатан, поэтому у меня нет возможности объявить новую палитру оттенков серого, а затем назначить ее моему растровому изображению.

Ниже приведен пример кода, написанного на 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

Итак, я спрашиваю: можно ли как-нибудь установить палитру моего растрового изображения в оттенки серого?


person ThunderBalls    schedule 28.07.2014    source источник
comment
Ну, я не нашел решения этой проблемы, я переписал свой проект на С#. Заняло некоторое время, но сработало.   -  person ThunderBalls    schedule 31.07.2014


Ответы (1)


Я думаю, просто изменив цветовую палитру, ваше изображение не изменится на оттенки серого.

Вам нужно будет изменить каждый цветной пиксель изображения на оттенки серого. алгоритмы здесь.

person Gautam Jain    schedule 28.07.2014
comment
Возможно, я не предоставил достаточно информации. Я читаю прямую трансляцию с монокамеры, и мне нужно сохранить .bmp, когда я нажимаю кнопку привязки. Но когда я сохраняю кадр в растровое изображение, это происходит. Так что я предполагаю, что я не правильно установил палитру. Вот почему я прошу помощи о палитре, а не потому, что хочу преобразовать свои изображения в оттенки серого. - person ThunderBalls; 28.07.2014