Мне нужно прочитать изображение в градациях серого .bmp в 2D-матрице. Значениями (int) на матрице будут соответствующие уровни градаций серого на изображении (от 0 до 255).Как импортировать изображение в оттенках серого в двумерную матрицу в C?
Будучи более конкретным, давайте предположим, что у меня есть 8-битное изображение в сером цвете 4x4.
Я хочу, чтобы преобразовать его в 2d матрицы, значения которых будут полутоновые уровни, например:
| 0 ...... 2 ...... 4 ..... ..5 |
| 10 .... 11 .... 12 .... 10 |
210..200..150..98 |
| 1 ..... 10 .... 50 ..... 88 |
До сих пор мне удалось импортировать изображение в оттенках серого в 3 матрицы (RGB), но когда я пытаюсь преобразовать его в одну матрицу (в оттенках серого) с использованием коэффициентов преобразования, это не сработает. Изображение стало иным, чем оригинал.
Функция преобразования, я использую это: ...
for (int i = 0; i < l; i++)
for (int j = 0; j < c; j++)
{
b[i][j] = (int)(0.11*b[i][j] + 0.59*g[i][j] + 0.3*r[i][j]);
g[i][j] = b[i][j];
r[i][j] = g [i][j];
}
}
Лично я не стал бы беспокоиться о каком-то смешном, тайном, нелогичном формате Microsoft от 80-х годов. Я бы использовал ImageMagick, чтобы преобразовать его в файл PGM (Portable Grey Map), который вы сможете прочитать примерно в 3 строках C. Команда для конвертирования - это 'convert image.bmp image.pgm'. Дополнительная информация: http: //en.wikipedia.org/wiki/Netpbm_format –