Nightshade2 |
Отправлено: 30 Ноября, 2016 - 13:52:41
|


Наблюдатель

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

|
Сейчас написал такой код
CODE:
int analiz[300][350];
screen (#analiz[0][0], PosX_st[0], PosY_st[0], PosX_kn[0]+70, PosY_kn[0], w);
saveimage(#analiz[0][0], "c:\screen\1.bmp");
int aX,aY,pxl,pxlR,pxlG,pxlB;
for (aX=0;aX<300;aX++)
{
for (aY=0;aY<300;aY++)
{
pxl=analiz[aX][aY];
pxlR=rvalue(pxl);
pxlG=gvalue(pxl);
pxlB=bvalue(pxl);
pxlR=(pxlR/64)*64;
pxlG=(pxlG/64)*64;
pxlB=(pxlB/64)*64;
pxl=rgb(pxlR, pxlG, pxlB);
analiz[aX][aY]=pxl;
}
}
saveimage(#analiz[0][0], "c:\screen\1_obrab.bmp");
Код работает безумно долго. Около 30 сек. Приемлимо было бы меньше 500 мс.
|
|
|
Dreika |
Отправлено: 18 Февраля, 2025 - 23:52:55
|


Прохожий

Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2025
Репутация: 0

|
<img src="https://ru.paste.pics/SU77O"></img>
Без COLORMODE в кибере нет возможности поиска динамично перекрывающихся линиями объектов.
PHP:
/// Рабочее нахождение перечеркнутого линиями объекта через Clicerman
SUB(sk, $var)
FOR($a=0,$a<18)
arrpop($var)
$a=$a+1
END_CYC
END_SUB
GETSCREEN // снимок экрана в буфер для анализа
COLORMODE(7)
SCANPXL($ARR_SCAN, 0,0, $_xmax,$_ymax, 8339327)
sk($ARR_SCAN)
while (ARRSIZE($ARR_SCAN)>0)
$y=arrpop($ARR_SCAN)
$x=arrpop($ARR_SCAN)
$p=PXLCOUNT($x-18,$y-18, $x+18,$y+18, 8339327)
IF($p>108)//108
//LOGWRITE("Проверка пикселей $p>165 в $p=", $p)
IF($p<198)//180
$p2=PXLCOUNT($x-18,$y-18, $x+18,$y+18, 12550079)
//LOGWRITE("Проверка пикселей $p<198 в $p=",$p," $p2=",$p2)
IF($p2>68)//68
//LOGWRITE("Проверка пикселей $p2>99 в $p=",$p," $p2=",$p2)
IF($p2<95)//95
$p3=PXLCOUNT($x-18,$y-18, $x+18,$y+18, 4145151)
//LOGWRITE("Проверка пикселей $p2>99 в $p=",$p," $p2=",$p2," $p3=",$p3)
IF($p3>1)//1
LOGWRITE("Проверка пикселей $p3>99 в $p=",$p," $p2=",$p2," $p3=",$p3)
IF($p3<11)//11
LOGWRITE("Биржа найдена в x=",$x," y=",$y," $p=",$p," $p2=",$p2," $p3=",$p3)
END_IF
END_IF
END_IF
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
(Добавление)
[img](для просмотра ссылки Вам необходимо авторизоваться) /img](Отредактировано автором: 19 Февраля, 2025 - 00:10:28) |
|
|
Dreika |
Отправлено: 25 Февраля, 2025 - 07:04:16
|


Прохожий

Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2025
Репутация: 0

|
Попробовала. Пока находит кучу лишнего. как искать диапазоном минимум - максимум(0 не ограничено) пикселя данного усреднённого цвета? Перегруженные функции судя по параметрам одной и той же функции же поддерживаются? Много похожих объектов отфильтровать. В "подборе цвета" цвета не отображает, приходиться копировать и смотреть что за цвета. Ну и весь список найденных желательно (указывать сколько цветов выводить, чтоб выбрать самые редкие). Искать по выбранному пипеткой цвету количество усреднённых пикселей по выделению возможно?
CODE:int r=61;//Допускаемое отклонение цвета пикселя
int color[6], kol[6];//Массивы для цветов
//color[0]=8339327;
//color[1]=12550079;
//color[2]=4145151;
//kol[0]=109;
//kol[1]=69;
//kol[2]=2;
color[0]=6365519;
color[1]=10448806;
color[2]=2757266;
color[3]=1246179;
color[4]=2981588;
color[5]=7253472;
kol[0]=195;
kol[1]=66;
kol[2]=15;
kol[3]=6;
kol[4]=4;
kol[5]=2;
int x, y;//Тут координаты найденные
int Xx=0, Yy=0;//Вспомогательные
textbkcolor (8454143,255);//Установка цвета текста
int colors, xw, yw;
getdisplay(colors, xw, yw);
if (findheapcolor(1, #color[0], #kol[0], 6, 6, #x, #y, 36, 36, 72, 72, 0, 0, xw, yw, r, r, r, r, r, r, -1)==1)
{
//string u=format(yw)+"Биржа найдена!"+format(y);
//messagebox (u);
textout(0, x, y, "Биржа найдена!", 0);
//sleep(100);
}
else{
//messagebox (""); textout(0, Xx, Yy, "", 0);
}
sleep(2000);
(Отредактировано автором: 25 Февраля, 2025 - 07:14:21) |
|
|
|