hronorog
Апрель 8, 2016 15:49:03
Привет.
Есть скрипт, который рандомно показывает на экране круг, залитый одним из трех цветов, красным, зеленым или черным. Человек (ребенок) должен мышкой нажать на кружочек того же цвета. У него внизу экрана три круга с этими цветами. Такая нехитрая забава для малышей.
Как узнать, какой цвет выпал? Чтобы понять, что скрипт работает нормально, использую Sikuli для симуляции действий пользователя.
Почему-то сикули путает цвета даже при требовании 95% совпадения. Если сгенерировать в ряд два десятка кругов с этими цветами и попросить сикули найти только красные, то в результат попадают и некоторые черные.
Хотел бы получить цвет без алгоритмов сикули, только за счет питона.
ZerG
Апрель 8, 2016 15:55:52
ЭЭЭ чисто вапрос…
А зачем так??????
Вы же знаете цвет какой выпал!!! круг одноцветный!
Ну так если Зеленый то надо кликнуть на квадратик с таким же значением!!! )_о
hronorog
Апрель 8, 2016 16:29:12
а если не знаю, какой цвет?
сикули позволяет симулировать юзверя, я хочу убедиться, что ребенок видит, распознает и нажимает верные цвета. То есть цветовая палитра отображается верно.
Программно вывел красный цвет, программно считал его, сравнил. Скриптовая магия под капотом и может быть не видна.
Если привести аналогию, то какой-нить бот для фермы вконтакте, который ищет красные помидорки, чтобы кликнуть на них и собрать, подождать, пока серая земля станет зеленой, потом снова красной и опять кликнуть. Мне же недоступны внутренние процессы игры.
ZerG
Апрель 9, 2016 13:05:18
а если не знаю, какой цвет?
ТОгда вам надо не в программисты а в менеджеры
hronorog
Апрель 9, 2016 14:25:44
Хороший ответ от человека с четырьмя сотнями сообщений в разделе для новичков в теме с вопросом.
Попробую перефразировать вопрос, чтобы он стал более понятен для опытного формучанина:
Я открыл картинку, которая разлинована вертикальными и горизонтальными полосами, что-то вроде шахматной доски, некоторые из получившихся квадратов залиты белым цветом, некоторые черным. Надо посчитать количество черных квадратов. Как вариант решения я вижу такой способ:
взять первую горизонтальную линию шириной в один пиксель, пройтись по всей длине, проверить каждый пиксель и узнать границы квадратов. Так же сделать по вертикали, а уже потом посчитать полученные квадраты.
Как мне узнать цвет пикселя?
FishHook
Апрель 9, 2016 16:17:07
hronorog
Как мне узнать цвет пикселя?
Цвет пикселя определяется форматом картинки. Картинка сама по себе - это абстракция, в компьютерном мире она представлена некими данными в некоем формате типа jpeg, png, bmp и множеством других. Вам нужно знать формат файла и уметь его читать, тогда вы извлечете любую нужную информацию.
Насчет всего остального, вы исповедуете какой-то слишком ламерский подход, вы пытаетесь работать с ВЫВОДОМ программы, а не с реальными данными? которыми она оперирует и которые вам доступны. Это неверно, если вы хотите как-то проанализировать веселую ферму, то работать вы должны с траффиком клиент-серверного взаимодействия, а никак не с пикселями на экране.
hronorog
Апрель 9, 2016 17:31:21
да не нужна мне эта веселая ферма, привел в качестве примера.
то есть, мне нужно снимать скриншот видимой области и передавать его на обработку скрипту, в реальном времени цвет не узнать?
FishHook
Апрель 9, 2016 17:34:41
hronorog
Откуда у вас взялась картина на видимой области?
ПС: если не секрет, сколько вам лет?
hronorog
Апрель 9, 2016 20:52:21
Потому что сикули (
http://www.sikulix.com/) имитирует поведение человека, который видит перед собой экран (видимую область). К сожалению, даже в последней бета-сборке она продолжает путать красные и черные цвета, не говоря уже о стабильной ветке.
код на яве довольно короткий
java_import java.awt.Color
color = Location(x,y).getColor() # color is of type java.awt.Color
неужели на питоне все настолько плохо, что нужно указывать свой возраст, чтобы получить ответ?
Shaman
Апрель 9, 2016 21:17:06
Цвет пикселя можно получить, например, при помощи
PIL.ImageGrab.