Python-сообщество
- Начало
- » Python для новичков
- » Как узнать цвет пикселя под курсором?
#1 Апрель 8, 2016 15:49:03
hronorog Зарегистрирован: 2013-04-21 Сообщения: 20 Репутация: 0 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
Есть скрипт, который рандомно показывает на экране круг, залитый одним из трех цветов, красным, зеленым или черным. Человек (ребенок) должен мышкой нажать на кружочек того же цвета. У него внизу экрана три круга с этими цветами. Такая нехитрая забава для малышей.
Как узнать, какой цвет выпал? Чтобы понять, что скрипт работает нормально, использую Sikuli для симуляции действий пользователя.
Почему-то сикули путает цвета даже при требовании 95% совпадения. Если сгенерировать в ряд два десятка кругов с этими цветами и попросить сикули найти только красные, то в результат попадают и некоторые черные.
Хотел бы получить цвет без алгоритмов сикули, только за счет питона.
#2 Апрель 8, 2016 15:55:52
ZerG Зарегистрирован: 2012-04-05 Сообщения: 2350 Репутация: 64 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
ЭЭЭ чисто вапрос…
А зачем так.
Вы же знаете цвет какой выпал. круг одноцветный!
Ну так если Зеленый то надо кликнуть на квадратик с таким же значением. )_о
Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости
#3 Апрель 8, 2016 16:29:12
hronorog Зарегистрирован: 2013-04-21 Сообщения: 20 Репутация: 0 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
а если не знаю, какой цвет?
сикули позволяет симулировать юзверя, я хочу убедиться, что ребенок видит, распознает и нажимает верные цвета. То есть цветовая палитра отображается верно.
Программно вывел красный цвет, программно считал его, сравнил. Скриптовая магия под капотом и может быть не видна.
Если привести аналогию, то какой-нить бот для фермы вконтакте, который ищет красные помидорки, чтобы кликнуть на них и собрать, подождать, пока серая земля станет зеленой, потом снова красной и опять кликнуть. Мне же недоступны внутренние процессы игры.
#4 Апрель 9, 2016 13:05:18
ZerG Зарегистрирован: 2012-04-05 Сообщения: 2350 Репутация: 64 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
а если не знаю, какой цвет?
ТОгда вам надо не в программисты а в менеджеры
Влодение рускай арфаграфией — это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости
#5 Апрель 9, 2016 14:25:44
hronorog Зарегистрирован: 2013-04-21 Сообщения: 20 Репутация: 0 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
Хороший ответ от человека с четырьмя сотнями сообщений в разделе для новичков в теме с вопросом.
Попробую перефразировать вопрос, чтобы он стал более понятен для опытного формучанина:
Я открыл картинку, которая разлинована вертикальными и горизонтальными полосами, что-то вроде шахматной доски, некоторые из получившихся квадратов залиты белым цветом, некоторые черным. Надо посчитать количество черных квадратов. Как вариант решения я вижу такой способ:
взять первую горизонтальную линию шириной в один пиксель, пройтись по всей длине, проверить каждый пиксель и узнать границы квадратов. Так же сделать по вертикали, а уже потом посчитать полученные квадраты.
Как мне узнать цвет пикселя?
#6 Апрель 9, 2016 16:17:07
FishHook От: Зарегистрирован: 2011-01-08 Сообщения: 8312 Репутация: 568 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
hronorog
Как мне узнать цвет пикселя?
Цвет пикселя определяется форматом картинки. Картинка сама по себе — это абстракция, в компьютерном мире она представлена некими данными в некоем формате типа jpeg, png, bmp и множеством других. Вам нужно знать формат файла и уметь его читать, тогда вы извлечете любую нужную информацию.
Насчет всего остального, вы исповедуете какой-то слишком ламерский подход, вы пытаетесь работать с ВЫВОДОМ программы, а не с реальными данными? которыми она оперирует и которые вам доступны. Это неверно, если вы хотите как-то проанализировать веселую ферму, то работать вы должны с траффиком клиент-серверного взаимодействия, а никак не с пикселями на экране.
#7 Апрель 9, 2016 17:31:21
hronorog Зарегистрирован: 2013-04-21 Сообщения: 20 Репутация: 0 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
да не нужна мне эта веселая ферма, привел в качестве примера.
то есть, мне нужно снимать скриншот видимой области и передавать его на обработку скрипту, в реальном времени цвет не узнать?
#8 Апрель 9, 2016 17:34:41
FishHook От: Зарегистрирован: 2011-01-08 Сообщения: 8312 Репутация: 568 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
hronorog
Откуда у вас взялась картина на видимой области?
ПС: если не секрет, сколько вам лет?
#9 Апрель 9, 2016 20:52:21
hronorog Зарегистрирован: 2013-04-21 Сообщения: 20 Репутация: 0 Профиль Отправить e-mail
Как узнать цвет пикселя под курсором?
Потому что сикули (http://www.sikulix.com/) имитирует поведение человека, который видит перед собой экран (видимую область). К сожалению, даже в последней бета-сборке она продолжает путать красные и черные цвета, не говоря уже о стабильной ветке.
код на яве довольно короткий
java_import java.awt.Color color = Location(x,y).getColor() # color is of type java.awt.Color
неужели на питоне все настолько плохо, что нужно указывать свой возраст, чтобы получить ответ?
Отредактировано hronorog (Апрель 9, 2016 21:08:55)
Быстро узнать цвет пикселя на экране, Python
Мне нужно быстро узнавать цвет пикселя на экране и реагировать на его изменение. Я работаю на Linux, Fedora. Как это можно сделать быстро на Python? Я пробовал использовать pyautogui.pixelMatchesColor() но 5-7 проверок в секунду для меня слишком медленно. Как можно это реализовать так, чтобы скорость обработки была выше? Заранее спасибо.
Отслеживать
Positron NN
задан 20 мар 2020 в 18:16
Positron NN Positron NN
145 1 1 серебряный знак 9 9 бронзовых знаков
Если делать «быстро и тупо», я бы взял ffmpeg с x11grab и читал бы пиксели из его stdout
20 мар 2020 в 18:40
Наверное, я немножко опоздал, но библиотека mss позволяет захватить часть экрана и вроде бы довольно быстрая (на моём линуксе где-то до 7000 захватов в секунду получается)
16 апр 2020 в 20:19
0
Сортировка: Сброс на вариант по умолчанию
Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.
- python
- python-3.x
- linux
- обработка-изображений
определение цвета на экране
Нужно определить цвет пикселя по заданным координатам.
Cлышал что можно добится этого при помощи модуля GD, как именно не нашел.
Буду благодарен любой помощи.
Лучший ответ
Color pColor = (pictureBox1.Image as Bitmap).GetPixel(e.X, e.Y);
Остальные ответы
Обязательно на Perl? Просто на Python это можно сделать в одну строку с помощью модуля pyautogui https://pyautogui.readthedocs.org/en/latest/install.html
Ну его конечно надо сперва установить в Python, в комплекте этот модуль не идет. Ну и почитать документацию.
Вот например чтобы получить цвет RGB пиксела в скриншоте:
>>> import pyautogui
>>> pyautogui.pixel(100, 200)
(130, 135, 144)
Как изменить цвет пикселя на экране?
Как с помощью языка питон изменить цвет пикселя на экране? ВНИМАНИЕ: не на изображении, а на эране компьютера в реальном времени.
- Вопрос задан более трёх лет назад
- 767 просмотров
1 комментарий
Сложный 1 комментарий
Elvis @Dr_Elvis Куратор тега Python