Как преобразовать захваченное растровое изображение в 8-битное изображение в градациях серого? - PullRequest
1 голос
/ 21 августа 2011

Я пытаюсь преобразовать захваченное камерой изображение в 8-битное изображение.И это должно быть изображение в градациях серого.

Я искал на форумах, но не смог найти способ конвертировать в 8-битное изображение.

Любая помощь или предложение будут мне полезны.

Спасибо..

1 Ответ

0 голосов
/ 21 августа 2011

Вы дали слишком мало информации. Прежде всего, какой формат изображения обеспечивает ваша камера? Это какой-то формат RAW, JPEG или что-то еще?

Это делается программно (например, с использованием C):

Лучшим способом было использовать некоторую библиотеку загрузки изображений (например, SDL_image) и загрузить изображение в память, а несжатый RGB - целевой формат. Если у вас есть несжатый формат изображения RGB, вы можете сделать что-то вроде

// bufPtr points to the start of the memory containing the bitmap
typedef unsigned char byte;
struct rgb { byte red, green blue; } * colorPtr = bufPtr; 
for (int i = 0; i < bufSize; i++, bufPtr++) { 
   byte gray = (unsigned char) (((float) bufPtr->red * 0.3f + 
                                 (float) bufPtr->green * 0.59f + 
                                 (float) bufPtr->blue * 0.11f)) / 3.0f * 255.0f + 0.5f);
    bufPtr->red = bufPtr->green = bufPtr->blue = gray;
    }

Если вы не хотите кодировать, вы можете, например, используйте GIMP, загрузите ваше изображение и примените desaturate из цветового меню. Вы можете установить плагин ufraw для GIMP для загрузки в него изображений в формате RAW. Если вы хотите сохранить всю информацию о цвете в 8 битах (а не использовать 8 бит на канал цвета), в GIMP есть еще одна опция для уменьшения глубины цвета.

...