Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tarlis
0 / 0 / 0
Регистрация: 24.02.2013
Сообщений: 12
#1

Разъясните что тут написано, ну пожалуйста - C++

10.06.2013, 18:14. Просмотров 376. Ответов 1
Метки нет (Все метки)

Задали лабу - перевод рисунка с форматом BMP из цветного в ч/б изображение, нашёл структурку, но не могу разобраться что она делает... Если конкретно не совсем понимаю как она цвета на RGB палитру разбивает...
Код струкрутки на С++
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
void ToBlackWhite(char *szBmp)
{
    BITMAPFILEHEADER bfh;
    BITMAPINFOHEADER bih;
    RGBTRIPLE pix;
 
    DWORD dwRWBuf;
 
    HANDLE hFile = CreateFileA(szBmp,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
 
    ReadFile(hFile,&bfh,sizeof(BITMAPFILEHEADER),&dwRWBuf,NULL);
    ReadFile(hFile,&bih,sizeof(BITMAPINFOHEADER),&dwRWBuf,NULL);
 
    SetFilePointer(hFile,bfh.bfOffBits,NULL,FILE_BEGIN);
 
    DWORD nPixel = bih.biWidth * bih.biHeight;
 
    while(nPixel--) 
    {
        memset(&pix,0,sizeof(RGBTRIPLE));
        ReadFile(hFile,&pix,sizeof(RGBTRIPLE),&dwRWBuf,NULL);
 
        BYTE scale = (BYTE)(0.3*pix.rgbtRed + 0.59*pix.rgbtGreen + 0.11*pix.rgbtBlue);
        pix.rgbtRed = scale;
        pix.rgbtGreen = scale;
        pix.rgbtBlue = scale;
 
        SetFilePointer(hFile,-sizeof(RGBTRIPLE),NULL,FILE_CURRENT);
        WriteFile(hFile,&pix,sizeof(RGBTRIPLE),&dwRWBuf,NULL);
    }
 
    CloseHandle(hFile);
}

Заранее спасибо!
Можно с ссылкам на литературу...

нашёл тут, если кому интересно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 18:14     Разъясните что тут написано, ну пожалуйста
Посмотрите здесь:
C++ Подскажите пожалуйста что тут происходит
C++ Для чего тут вначале 2 раза написано ThreeD?
C++ Объясните пожалуйста как тут работает сортировка и что такое ostream_iterator<string>
Разъясните пожалуйста C++
C++ Разъясните пожалуйста (классы)
C++ Разъясните пожалуйста задачу
Разъясните пожалуйста некоторые детали... C++
C++ Разъясните пожалуйста фрагмент программы
C++ Проверьте пожалуйста. Правильно ли написано.
Разъясните пожалуйста пару строк кода C++
разъясните,пожалуйста, как это сделать? C++
Что же сдесь написано? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
5464 / 1830 / 338
Регистрация: 10.12.2010
Сообщений: 5,412
Записей в блоге: 3
10.06.2013, 19:54     Разъясните что тут написано, ну пожалуйста #2
Цитата Сообщение от Tarlis Посмотреть сообщение
не могу разобраться что она делает
Здесь важно сначала подумать. Что такое в принципе черно-белое изображение? Это изображение в котором все три цветные компоненты имеют одно значение. Собственно вся матчасть содержащая этот принцип сосредоточена в строке 23, где и происходит перевод цвета пикселя в черно-белый формат. Почему именно такие коэффициенты - не знаю, возможно выбраны эмпирически.
Yandex
Объявления
10.06.2013, 19:54     Разъясните что тут написано, ну пожалуйста
Ответ Создать тему
Опции темы

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