Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 33
1

Преобразовать цветное изображение в черно-белое

12.09.2015, 16:18. Показов 1765. Ответов 2
Метки нет (Все метки)

Интересует не вычисление порога, и не алгоритм.
В c# я загружаю изображение в bitmap, лочу, загружаю через marshal copy в память, редактирую байты в массиве , унлочу.
А как эту задачу решить в си?
0

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

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

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

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

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

Как преобразовать изображение в черно белое?
Как преобразовать изображение из цветного в черно белое?

2
542 / 437 / 356
Регистрация: 05.11.2013
Сообщений: 1,208
Записей в блоге: 6
13.09.2015, 10:51 2
написать свою поддержку bmp, видимо
загружаешь файл в структуру, редактируешь байты, относящиеся к цветам пикселов, меняешь пару байт в заголовке, сохраняешь файл обратно
0
824 / 627 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
13.09.2015, 21:40 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <stdio.h>
#include <malloc.h>
#include <stdint.h>
 
//только для 24/32-битных растров
int bmp_to_gray(const char* fn){
    int       bpp, width, height, r, g, b;
    long      off;
    size_t    num, size, i;
    uint8_t*  bits, *pb;
    uint16_t  finf[7];
    uint32_t  inf[10];
    
    FILE* fp = fopen(fn, "rb+");
    if(fp == NULL)
        return 0;
 
    num = fread((void*)&finf[0], sizeof(finf[0]), 7, fp);
    if((finf[0] != 0x4D42) || (num != 7)){
        fclose(fp);
        return 0;
    }
 
    num = fread((void*)&inf[0], sizeof(inf[0]), 10, fp);
    bpp = (int)((inf[3] >> 16) & 0xFFFF);
    if((inf[4] != 0) || (bpp < 24) || (bpp > 32) || (num != 10)){
        fclose(fp);
        return 0;
    }
 
    off = (long)((uint32_t)finf[6] << 16) | finf[5];
    fseek(fp, off, SEEK_SET);
    if(feof(fp)){
        fclose(fp);
        return 0;
    }
    width  = (int)inf[1];
    height = (int)inf[2];
    if(height < 0)
        height = 0 - height;
 
    size   = (size_t)((width * bpp + 31) & ~31) / 8 * height;
    bits   = (uint8_t*)malloc(size);
    if(bits == NULL){
        fclose(fp);
        return 0;
    }
 
    num = fread((void*)bits, 1, size, fp);
    if(num != size){
        fclose(fp);
        free(bits);
        return 0;
    }
    
    bpp /= 8;
    pb   = bits;
    for(i = 0; i < size; i += bpp){
        r     = (int)pb[0];
        g     = (int)pb[1];
        b     = (int)pb[2];
        pb[0] = (uint8_t)((r * 77 + g * 150 + b * 29 + 128) / 256);
        pb[1] = pb[0];
        pb[2] = pb[0];
        pb   += bpp;
    }
    fseek(fp, off, SEEK_SET);
    num = fwrite((const void*)bits, 1, size, fp);
    fflush(fp);
    fclose(fp);
    
    free(bits);
    if(num != size)
        num = 0;
    return (num > 0);
}
 
int main(void) {
    if(bmp_to_gray("image.bmp"))
        puts("yes to gray.");
    else
        puts("error convert!");
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2015, 21:40

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

Преобразовать серое полутоновое изображение в черно-белое
Нужно преобразовать серое полутоновое изображение в черно-белое .Пытался взять за основу программу...

Как преобразовать изображение BMP в черно-белое и не только?
Здравствуйте! В общем стоит задача сделать консольный фото редактор, который выполнял бы ряд...

Преобразовать Цветное изображение в Двух-цветное
Дано растровое изображение , цветное фото , лицо, необходимо преобразовать это фото на изображение...

Цветное изображение на черно-белом лазерном принтере
Если ошибся с разделом прошу перебросить тему. Добрый день, мне необходимо распечатать скрин...


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

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

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