Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Уменьшение количества цветов в изображении


Автор: Natashechka 17.4.2013, 12:08
Здравствуйте! Пишу программу, которая преобразовывает изображение в схему для вышивки. Для этого изображение загружается в программу, разбивается на определенное количество равных квадратных ячеек (пользователь вводит количество необходимых ячеек по ширине изображения, и относительно этого программа разбивает все изображение). Затем в каждой ячейке определяется основной цвет, так чтобы в ячейке был только один цвет, результат выводится на экран. Дальше по задумке необходимо ограничить количество цветов на изображении (необходимое кол-во вводит пользователь) Вот тут то и возникает проблема: Если, скажем, пишем 3 цвета то это не совсем 3 цвета. У нас система RGB, и вот каждый из этих цветов делится на три. т.е. в реальности 3 - это 9. Как-то так. 

Работаю в Borlsnd C++ Builder.
У меня это записано таким образом:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int colcol=Edit2->Text.ToInt();
int inclr,outclr,r,g,b;
for (int x=1;x<Image2->Width;x++)
{for (int y=1;y<Image2->Height;y++)
{
inclr=Image2->Canvas->Pixels[x][y];
outclr=MyColors(colcol,inclr);
// r=OneColor(outclr,'R');
// g=OneColor(outclr,'G');
// b=OneColor(outclr,'B');
Image2->Canvas->Pixels[x][y]=outclr;
}
}
}

Автор: Avazart 18.4.2013, 17:03
А в чем собственно проблема ?

Пользуйся преобразованиями TColor <-> RGB

Код

TColor myColor = RGB(red,green,blue);

int R = GetRValue(myColor);
int G = GetGValue(myColor);
int B = GetBValue(myColor); 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)