Author Topic: Цвет пикселей беспорядочно скачет  (Read 2877 times)

0 Members and 1 Guest are viewing this topic.

Shatten

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Всем привет! Помощь нужна небольшая, пытаюсь определить цвет пикселя, при наведении мышки на пиксель и попытки записать цвет, он беспорядочно меняется, как от этого избавиться? Игра ARK. Поиск по части изображения не проходит. Пытался через Colormode, но видимо из-за беспорядочной смены цвета он при следующем разе скрина берет другие цвета.
« Last Edit: April 16, 2016, 05:03:48 PM by Shatten »

Shatten

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Цвет пикселей беспорядочно скачет
« Reply #1 on: April 16, 2016, 09:19:21 PM »
Code: [Select]
FOR($i, $I < 10)
   GETSCREEN(687,278,1231,672)
   COLORMODE(6)
   $pix_count = 1
   WHILE($pix_count > 0)
     
      GETSCREEN(687,278,1231,672)
      COLORMODE(6)
      $pix_count = PXLCOUNT(0,0, $_xmax,$_ymax, 8388351,12961215,4143674,4171455,4177855,4177919,4243711)
      IF_PIXEL_IN (0,0, $_xmax,$_ymax,8388351,12961215,4143674,4171455,4177855,4177919,424371)
         MOVE($_return1, $_return2)
         WAITMS(200)
         KEYPRESS(#o)
         WAITMS(200)
         
         
         
      END_IF
   END_CYC
   
   
   //=============================================
   WAITMS(100)
   move (927,508)
   WHEELDOWN(1)
   
   
END_CYC
HALT
вот код, именно так и сделал, но все равно не находит

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Цвет пикселей беспорядочно скачет
« Reply #2 on: April 17, 2016, 07:58:00 AM »
А с каких это пор PXLCOUNT может считать больше одного цвета?


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Цвет пикселей беспорядочно скачет
« Reply #3 on: April 17, 2016, 08:50:13 AM »
Зачем здесь вообще PXLCOUNT? И два гетскрина с колормодом? Всё лишнее.
Странный подход, подсчитать количество всего (дольше) чтобы решить, будем искать или нет (намного быстрее) для мнимой оптимизации.
Переменную $pix_count можно сделать обычным флагом.


Shatten

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Цвет пикселей беспорядочно скачет
« Reply #4 on: April 17, 2016, 09:52:44 AM »
В общем говоря, дело обстоит так, у меня есть область, которую надо проверить на пиксели, если они есть, то найти их,  переместить на них мышкой и нажать английскую "O", затем поместить мышку в центр, прокрутить колесико вниз, и по новой. Если нет(не нашел пиксели), то переместить мышку в центр, прокрутить колесиком вниз и опять проверить, и так по кругу, 10 раз.
pxl_count был как раз флагом, есть ли цвета, если есть, определяем местоположение, нажимаем букву, если нет, крутим колесиком.
PXLCOUNT как раз на такое количество цветов находил хотя бы один, и он находил, но с переменным успехом. Как раз видимо из-за того, что не может искать больше одного, значит надо несколько PXLCOUNT для нескольких цветов.
Вся проблема так и остается, ему сложно искать из-за того, что цвета в игре хаотично прыгают, вообще не понимаю почему.
P.S. Еще проблемка, что в полноэкранном режиме GETSCREEN делает скрин экрана, который был перед последним ALT+TAB, тоже самое происходит когда жмешь кнопку принтскрин, сохраняет только последний кадр перед ALT+TAB последний, и пока еще раз не сделаешь ALT+TAB не обновляет картинку. Надеюсь доходчиво объяснил  :)


Quote
// может колёсико можно крутить большее число раз высота поиска ведь почти 400 пикселей!   
Важно чтобы объектов, которые ищутся по пикселям не осталось, для этого так подробно, хотя немного интервал можно увеличить конечно. Эта область - окошко с пролистыванием, где есть множество объектов.
« Last Edit: April 17, 2016, 09:54:53 AM by Shatten »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Цвет пикселей беспорядочно скачет
« Reply #5 on: April 17, 2016, 10:45:42 AM »
...у меня есть область, которую надо проверить на пиксели, если они есть, то найти их...
"Проверить на пиксели" и "найти их" это одно и то же. Проверить это и есть найти.
Только ты выбрал путь длинней - посчитать. Чтобы посчитать нужно тоже найти...
Т.е. скрипт ищет, считает ВСЕ! чтобы понять нужно ли искать? Не замысловато ли?


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Цвет пикселей беспорядочно скачет
« Reply #6 on: April 17, 2016, 10:45:43 AM »
Вот так видимо
Code: (clickermann) [Select]
FOR($i=0, $I < 10)
   LOGWRITE ("Цикл: ", $i+1)
   $pix_count = 1
   WHILE($pix_count > 0)
      GETSCREEN
      COLORMODE(6)
      IF_PIXEL_IN (687,278,1231,672,8388351,12961215,4143674,4171455,4177855,4177919,424371)
         LOGWRITE ("Найдено: ", $_return1, ",", $_return2)
         MOVE($_return1, $_return2)
         WAITMS(200)
         KEYPRESS(#O)
         WAITMS(200)
      ELSE
         LOGWRITE ("Не найдено")
         $pix_count = 0
      END_IF
   END_CYC
   
   //=============================================
   WAITMS(100)
   move (927,508)
   WAITMS(100)
   WHEELDOWN(1)
   WAITMS(500)
END_CYC
LOGSHOW (1, 100,100)
HALT

Shatten

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Цвет пикселей беспорядочно скачет
« Reply #7 on: April 17, 2016, 11:12:30 AM »
"Проверить на пиксели" и "найти их" это одно и то же.
Я подсчет использовал в принципе чисто для того, чтобы у меня был флаг есть или нет, просто для нахождения их местоположения надо тогда делать, если местоположение больше 0,0 координат, тогда выполняется цикл, и постоянно мышку перегонять в 0,0. Чтобы такого не делать сделал методом, если больше 0 поиск пикселей, выполняется цикл.

Прикладываю скрин, моя задача отыскать желтые ягоды в центральном окне и по их координатам нажать букву O. Хотя я так понял это все уже поняли. Сама проблема в меняющихся пикселях, когда мышка стоит на месте, и когда я через COLORMODE делаю цветокоррекцию он не находит такие же цвета. Попробую видео записать, чтобы было понятно

Как предложил Oraven, как раз решило проблему с лишним подсчетом пикселей. Спасибо! А что же на счет меняющихся пикселей...
« Last Edit: April 17, 2016, 11:48:01 AM by Shatten »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Цвет пикселей беспорядочно скачет
« Reply #8 on: April 18, 2016, 10:23:25 AM »
А ты в курсе, что из этого всего
Code: [Select]
(8388351,12961215,4143674,4171455,4177855,4177919,424371)в COLORMODE(6) существует только 2 цвета 4177855,4177919?

Почему не сделать просто поиск по картинке с колормодом? Ведь видно же, что там полупрозрачность.
Подбираешь колормод, вырезаешь часть из своих жёлтых ягод и всё. Задача то элементарная.

А про PXLCOUNT здесь я пытался тебе намекнуть, чтоб ты сам понял что не так. Как всегда код выложили готовый и больше ничего не нужно. А как видно из позднего сообщения ты не понял что не так.
Мне просто подход напомнил один анекдот:
Quote
Двое едут на поезде, один говорит:
- Смотри отара овец пасётся
второй:
- да 98 голов!!!
- а как ты так быстро посчитал?
- а чё там,  посчитал ноги и разделил на 4