Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
6 / 3 / 4
Регистрация: 10.12.2017
Сообщений: 151
1

Черно-белое изображение

25.03.2019, 21:36. Показов 1340. Ответов 2
Метки нет (Все метки)

Здравствуйте, возникла проблема создание сегментированного изображения....

Нашёл код для преобразования цветного изображения в черно-белое. Но мне нужно чтоб меняло только на чёрный и только на белый.. То есть для белого цвет (RGB : 255 255 255), для черного (RGB: 0 0 0)...

Вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    FILE *fIn = fopen("tiger.bmp", "rb");
    FILE *fOut = fopen("tiger_gray.bmp", "wb");
    if (!fIn || !fOut)
    {
        printf("File error.\n");
        return 0;
    }
 
    unsigned char header[54];
    fread(header, sizeof(unsigned char), 54, fIn);
    fwrite(header, sizeof(unsigned char), 54, fOut);
 
    int width = *(int*)&header[18];
    int height = abs(*(int*)&header[22]);
    int stride = (width * 3 + 3) & ~3;
    int padding = stride - width * 3;
 
    printf("width: %d (%d)\n", width, width * 3);
    printf("height: %d\n", height);
    printf("stride: %d\n", stride);
    printf("padding: %d\n", padding);
 
    unsigned char pixel[3];
    for (int y = 0; y < height; ++y)
    {
        for (int x = 0; x < width; ++x)
        {
            fread(pixel, 3, 1, fIn);
            unsigned char gray = pixel[0] * 0.3 + pixel[1] * 0.58 + pixel[2] * 0.11;
            memset(pixel, gray, sizeof(pixel));
            fwrite(&pixel, 3, 1, fOut);
        }
        fread(pixel, padding, 1, fIn);
        fwrite(pixel, padding, 1, fOut);
    }
    fclose(fOut);
    fclose(fIn);
    return 0;
}
Пример того, что мне нужно (До и После):

Надеюсь на вашу помощь.
Заранее спасибо.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Изображения
  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2019, 21:36
Ответы с готовыми решениями:

Преобразовать цветное изображение в черно-белое
Интересует не вычисление порога, и не алгоритм. В c# я загружаю изображение в bitmap, лочу,...

Как преобразовать изображение BMP в черно-белое на C
Столкнулся с проблемой написания программы по изменению цвета. В интернете множество аналогичных...

Черно-белое изображение на цветном ТВ
Вообщем дело в том, что есть телевизор плазма какая то, сам цветной , но все устройства которые...

Перевести изображение в чёрно-белое
Имеется QImage изображение которое необходимо сделать чёрно-белым. С помощью формул получалось...

2
Evg
Эксперт CАвтор FAQ
21172 / 8186 / 630
Регистрация: 30.03.2009
Сообщений: 22,490
Записей в блоге: 30
25.03.2019, 22:15 2
Лучший ответ Сообщение было отмечено Naz17 как решение

Решение

Вероятно, между 35-й и 36-й строкой вставить код, который градацию серого превратить в чёрный или белый:

C
gray = (gray > 127) ? 255 : 0;
пороговое значение (127) подбирать экспериментально
1
6 / 3 / 4
Регистрация: 10.12.2017
Сообщений: 151
25.03.2019, 23:03  [ТС] 3
Evg, Да, работает.. Спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2019, 23:03

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Opencv черно-белое изображение
Считываю изображение - перевожу его в черное-белое, вывожу в label, а оно странно отображается,...

Цветное изображение -> черно-белое
как правильно сформировать матрицу яркости изображения и записать его в файл? что бы получить чб...

Черно-белое изображение -> изображение в цвете
Я загружаю чб изображение : Код Delphi procedure TForm1.Button1Click(Sender: TObject); begin if...

Черно-белое изображение в одномерный массив
Подскажите как преобразовать изображение 256х256х8. В одномерный массив?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.