Я пытаюсь преобразовать цветной BMP-файл в BMP в масштабе шкалы. Входной бит - 24 бит, и я получаю тот же 24-бит битпм на выходе, только на этот раз в сером цвете.Преобразование цвета bmp в оттенки серого bmp?
код я использую
for(int x = 0; x < max; x++)
{
int lum;
lum = (r[x]*0.30) + (g[x]*0.59) + (b[x]*0.11);
r[x] = lum;
g[x] = lum;
b[x] = lum;
}
r
, g
, b
массивы являются компоненты цвета RGB, и я их в char *r,*g,*b
.
По некоторым причинам я не получаю чистый выход. Я присоединяю вывод, который я получаю с этим вопросом, его неоднородный и содержит белые и черные области на ладонях. Так что я делаю неправильно здесь?
- Это связано с потерей данных при расчете lum или есть что-то не так, чтобы хранить int как char?
- Может ли шкала bmp с серой шкалой не быть 24 бит? или это что-то не так в том, как я сохраняю значения rgb после преобразования?
Любая помощь в этом будет очень полезна. Благодарю.
Вы можете добавить свой код? как вы загружаете изображение в матрицу и выполняете этот процесс и сохраняете его? благодаря! –