Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Без описания
Ingo
Отправлено: 08 Декабря, 2015 - 14:35:03
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2015  
Откуда: Москва
Репутация: 1




Необходимо уменьшить глубину цвета изображения на экране до 8 цветов.
Что я делаю не так? Или может есть другой, более очевидный путь, сам то я вообще только неделю как открыл для себя программирование в виде Кибора.

CODE:
//скрипт для уменьшения глубины цвета изображения до 8 цветов

int shot[1920][1080];//массив для хранения исходного изображения
screen (#shot[0][0], 0, 0, 1920, 1080, -1);
int shotR[1920][1080];//массив для хранения красного канала
int shotG[1920][1080];//зелёного
int shotB[1920][1080];//синего

//раскладываем исходное изображение на каналы
for (int a=0; a<1920; a++)
{
for (int b=0; b<1080; b++)
{
shotR[a][b]=rvalue(shot[a][b]);
}
}
saveimage(#shotR[0][0], "D:\Rchannel.bmp");

for (int a=0; a<1920; a++)
{
for (int b=0; b<1080; b++)
{
shotG[a][b]=gvalue(shot[a][b]);
}
}
saveimage(#shotG[0][0], "D:\Gchannel.bmp");

for (int a=0; a<1920; a++)
{
for (int b=0; b<1080; b++)
{
shotB[a][b]=bvalue(shot[a][b]);
}
}
saveimage(#shotB[0][0], "D:\Bchannel.bmp");
//уменьшаем градацию цветов
//все оттенки серого до 128 становятся нулями
//остальные - единицами
for (int a=0; a<1920; a++)
{
for (int b=0; b<1080; b++)
{
if (shotR[a][b]<128)
{
shotR[a][b]=0;
}
else
{
shotR[a][b]=1;
}
}
}

for (int a=0; a<1920; a++)
{
for (int b=0; b<1080; b++)
{
if (shotG[a][b]<128)
{
shotG[a][b]=0;
}
else
{
shotG[a][b]=1;
}
}
}

for (int a=0; a<1920; a++)
{
for (int b=0; b<1080; b++)
{
if (shotB[a][b]<128)
{
shotB[a][b]=0;
}
else
{
shotB[a][b]=1;
}
}
}
//Собираем картинку обратно, получая на выходе 8 цветов
for (int a=0; a<1920; a++)
{
for (int b=0; b<1080; b++)
{
shot[a][b]=rgb(shotR[a][b], shotG[a][b], shotB[a][b]);
}
}
saveimage(#shot[0][0], "D:\8colors.bmp");

Картинки не создаются.
 
 Top
Kibor
Отправлено: 08 Декабря, 2015 - 18:45:16
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8194
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




прежде укажу ошибку ..

постоянно объявляются переменные a b

кроме этого даже исправив ошибку этот скрипт будет выполняться оч долго в кибор.
про логику не скажу . не смотрел. быстрее всего неправильно.

примерное упрощение цветов так...

CODE:
int Image_0[500][500];
loadimage (#Image_0[0][0], "C:\Users\Вова\Desktop\Image_0.bmp");
int r, g, b, xr, yr;
xr=imagewidth(#Image_0[0][0]);
yr=imageheight(#Image_0[0][0]);
for (int x=0; x<xr; x++)
{
for (int y=0; y<yr; y++)
{
r=rvalue(Image_0[x][y])/32;
g=gvalue(Image_0[x][y])/32;
b=bvalue(Image_0[x][y])/32;
r=r*32;
g=g*32;
b=b*32;
Image_0[x][y]=rgb(r, g, b);
}
}
saveimage(#Image_0[0][0], "C:\Rchannel.bmp");

(Добавление)
В кибор надо не упрощать цвет , а использовать расширенную findimage
 
 Top
Ingo
Отправлено: 09 Декабря, 2015 - 20:02:22
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 13
Дата рег-ции: Нояб. 2015  
Откуда: Москва
Репутация: 1




Спаибо. Будем работать.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by