Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на C / C++


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Асмик Александровна
Статус: Академик
Рейтинг: 7454
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2645
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2327
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / C/C++

Номер выпуска:1642
Дата выхода:09.03.2011, 18:00
Администратор рассылки:Киселёва Алёна aka Verena (Профессор)
Подписчиков / экспертов:317 / 185
Вопросов / ответов:1 / 1

Вопрос № 182373: Здраствуйте уважаемые эксперты! Столкнулся с проблемой. Помогите, пожалуйста. Необходимо в Visual Studio C++ 2008 реализовать интерфейс программы, которая преобразует картинку в формате bmp из RGB в YIQ и обратно. Большое спасибо за помощь! ...



Вопрос № 182373:

Здраствуйте уважаемые эксперты!
Столкнулся с проблемой. Помогите, пожалуйста. Необходимо в Visual Studio C++ 2008 реализовать интерфейс программы, которая преобразует картинку в формате bmp из RGB в YIQ и обратно. Большое спасибо за помощь!

Отправлен: 04.03.2011, 11:22
Вопрос задал: Mangoost (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает Павел Юрьевич (10-й класс) :
Здравствуйте, Mangoost!

Преобразования между RGB <-> YIQ выполняются следующим образом:

Y = 0.299*R + 0.587*G + 0.114*B
I = 0.596*R - 0.274*G - 0.322*B
Q = 0.212*R - 0.523*G + 0.311*B

и обратно:
R = 1.0*Y + 0.956*I + 0.621*Q
G = 1.0*Y - 0.272*I - 0.647*Q
B = 1.0*Y - 1.105*I + 1.702*Q

Код для чтения BMP-файла:


Код:
struct TBMPHeader{
//заголовок файла
short Type;
//сигнатура BM 0x4D42
long Size;
//размер файла в байтах 3*H*W+54
long Reserved;
//зарезервировано 0
long OffsetBits;
//смещение изображения от начала файла 54
//информационный за головок
long SizeH;
//размер заголовка 40 информационного заголовка
long Width;
//ширина изображения
long Height;
//высота изображения
short Planes;
//число плоскостей 1
short BitCount;
//глубина цвета, бит на точку 24
long Compression;
//тип еомпрессии(0 - несжатое изображение)
long SizeImage;
//разиер изображения, байт 3*W*H
long XPelsPerMeter; //горизонтальное разрешение, точка на метр 0
long YPelsPerMeter; //вертикальное разрешение, точка на метр 0
long ColorUsed; //число используемых цветов 0
long ColorImportant;//число основных цветов 0
};

struct TBGR {
unsigned char b;
unsigned char g;
unsigned char r;
};

LoadBMPFile(char *fname){
TBMPHeader BMPHeader;
FILE *f;
if ((f = fopen(fname,"rb")) == NULL){
cout<<"Ошибка открытия ф айла";
return;
}
fread(&BMPHeader,sizeof(TBMPHeader),1,f);
TBGR *inBGR = new TBGR[BMPHeader.Width]; //массив указателей на слова
while(!feof(f)){
fread(inBGR,3*BMPHeader.Width,1,f);
// Здесь делаете преобразования и тут же записываете в новый файл или используете по своему усмотрению.
}
fclose(f);
}
Дополнение ответа по просьбе отвечавшего.
-----
∙ Отредактировал: Киселёва Алёна aka Verena (Профессор)
∙ Дата редактирования: 04.03.2011, 13:00 (время московское)

Ответ отправил: Павел Юрьевич (10-й класс)
Ответ отправлен: 04.03.2011, 11:29
Номер ответа: 266082
Россия, Челябинск
ICQ # 197232777

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 266082 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное