Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Borland C++ Builder

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 18.04.2013, 20:05   #1
Неактивный пользователь
 
Пол:Женский
Регистрация: 18.04.2013
Сообщений: 1
Репутация: 0
По умолчанию Уменьшение количества цветов в изображении

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

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

int TForm1::MyColors(int ccol, int cpix)
{
// ccol - кол-во цветов cpix - исходный цвет
int ar[255],ag[255],ab[255];
int clrs; // ступень цвета
int r,g,b,tmpc,q;
q=pow(ccol, 1/3);
clrs=255/q;
for (int i=1;i<=q;i++)
{ar[i]=clrs*i;}
ar[0]=0;ar[q+1]=255;
//*****
for (int i=0;i<=q;i++)
{tmpc=OneColor(cpix,'R');
if ((tmpc>=ar[i])&&(tmpc<=ar[i+1]))
{r=ar[i];break;}
}
for (int i=0;i<=q;i++)
{tmpc=OneColor(cpix,'G');
if ((tmpc>=ar[i])&&(tmpc<=ar[i+1]))
{g=ar[i];break;}
}
for (int i=0;i<=q;i++)
{tmpc=OneColor(cpix,'B');
if ((tmpc>=ar[i])&&(tmpc<=ar[i+1]))
{b=ar[i];break;}
}
//r=OneColor(cpix,'R')/ccol;
//g=OneColor(cpix,'G')/ccol;
//b=OneColor(cpix,'B')/ccol;
return FullColor(r,g,b);
}
Это как раз функция, которая должна выделить n-е кол-во цветов. Здесь я из введенного числа (кол-ва цветов) извлекаю кубический корень.

А здесь кусок программы, где эта функция используется:
void __fastcall TForm1::Button2Click(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;
}
}
}

Но на выходе все поле заливается черным цветом - это не есть хорошо.
Подскажите, пожалуйста, где может быть ошибка.
Vashtanerada вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: неон рекламаgrespania alabasterноутбук на amd ryzenкресло-качалки купить недорогоалександр михайлов экология души билеты


Ответ

Опции темы
Опции просмотра

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка изображении в таблицу Paradox 7 Tolkyn S Delphi 3 04.04.2013 06:12
Видеокарта: полосы на изображении. rebroff Компьютерные проблемы 24 23.01.2012 19:43
ImageSpyer - утилита для скрытия файлов в изображении Papa lawyer Графика 0 16.09.2009 07:02
Изменение размеров изображении в PHP savca PHP 3 25.11.2008 23:25
Уменьшение фотографии lenin12 Архив 16 02.12.2007 21:55

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 10:39. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.13000 секунды с 11 запросами