|
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
|
|
Поиск определенного пикселя на экране25.02.2017, 23:04. Показов 37313. Ответов 20
Метки нет (Все метки)
Всем привет. Пишу игрового бота.
Дано: Есть часть экрана размером в 1080х871 Нужно: Найти в этой части экрана пиксель с RGB цветом 231 232 99 и вернуть его координаты(х, у). Возможно таких частей будет 2-3. Буду благодарен за помощь.
0
|
|
| 25.02.2017, 23:04 | |
|
Ответы с готовыми решениями:
20
Поиск определенного пикселя на экране Получение RGB цвета определённого пикселя на экране Поиск определенного пикселя на экране, или в окне другой программы |
|
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
|
|
| 01.03.2017, 22:00 [ТС] | |
|
Попробовал пропарсить циклом цвета пикселей на нужной мне части экрана... Так-то работает, но ждать минут 10-15 на парсинг большей части пикселей на экране...
0
|
|
|
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
|
||||||
| 02.03.2017, 17:01 [ТС] | ||||||
|
На данный момент все до чего додумался мой не шибко опытный мозг, то это до 2-ух циклов фор
0
|
||||||
|
|
|
| 02.03.2017, 17:29 | |
|
Dave_, OMG!!! Конечно будет тормозить!
Во-первых, вы в цикле получаете DC. Зачем? Его достаточно получить единожды. Во-вторых, пиксель вы получаете у него, у контекста. Я не знаю, что там происходит внутри, с winapi плотно не работал, но наверняка внутри там тоже множество всего тормозного и для частых вызовов не предназначенного. Картинку с этого контекста вам надо запихнуть в bitmap. И уже по нему пробегаться циклом. Добавлено через 1 минуту Dave_, да, в третьих. В возвращаемом значении у вас очень много лишнего. Формируется список и питоновский массив. Избавьтесь от формирования лишних объектов. Добавлено через 4 минуты Да, теоретически возможно ещё ускорить, избавившись от питоновских циклов. Но для этого надо содержимое картинки перевести в числовой массив в памяти, это надо разбираться, как.
0
|
|
|
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
|
|
| 02.03.2017, 17:36 [ТС] | |
|
Спасибо за ответ. С ДС разобрался. Перенес взятие hdc = win32gui.GetWindowDC(win32gui.GetDesktop Window()) в начало функции, остальное же беру и проверяю в массиве.
Касательно битмап, то понятия не имею как создать битмап и как работать с ним. Не мог бы ты объяснить?
0
|
|
|
|
|||
| 02.03.2017, 18:18 | |||
|
Вам надо: Создать свой HDC и HBITMAP, выбрать второе в первое через SelectObject(), и дальше вроде два варианта будет - гуглите Scan0 и ScanLine. Добавлено через 2 минуты Не по теме: Я никогда не работал с Python, я как бы по Апи. :) Добавлено через 9 минут Но по логике вам надо либо HDC окна (GetDC от HWND), либо HDC экрана (GetDC от 0), зачем тут Desktop? Добавлено через 1 минуту ReleaseDC(), DeleteDC() и DeleteObject() не забывайте!
0
|
|||
|
|
|||||||
| 02.03.2017, 18:30 | |||||||
Там в верхней половинке кода - сохранение в файл, это вам не нужно.
0
|
|||||||
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 02.03.2017, 18:30 | |
|
А вообще зачем юзать API если можно просто сделать скрин с помощью pillow и потом искать с помощью numpy нужные данные в массиве.
1
|
|
|
3 / 6 / 4
Регистрация: 01.08.2015
Сообщений: 8
|
||||||
| 03.03.2017, 15:05 | ||||||
0
|
||||||
|
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
|
|||||||||||
| 03.03.2017, 23:23 [ТС] | |||||||||||
|
Rodegast, Не могу установить PySide из-за того, что у меня 9-я версия питона.
alex925, Попробовал:
dondublon, к сожалению это С++, а не питон
0
|
|||||||||||
| 04.03.2017, 23:12 | ||||||
|
Может помочь тема:
Поиск фрагмента в изображении Ниже код, выполняющий захват экрана и поиск предварительно записанной части изображения.
__ Из проблем: Левый угол поиска, только нули. В строке поиск находит координату и переходит на следующую строку. В играх из интернета изображения могут приходить все время разные и сравнение трудно настроить. С увеличением области поиска, увеличивается время поиска, но весь захват и поиск - это доли секунды.
0
|
||||||
|
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
|
|
| 05.03.2017, 13:13 [ТС] | |
|
Лысанов Виталий, нету ли какого-то заменителя для autopy? Дело в том, что у меня питон 3.5, а autopy на гораздо ранние версии.
Добавлено через 4 минуты Заглянул в тему, которые ты мне дал ссылку. Ничего не подошло из тамошнего. Сделал два скрина(один то что нужно натйи, второй скрин всего экрана). Во всех способах возвращало фолс(т.е нету).
0
|
|
|
|
||
| 05.03.2017, 16:03 | ||
|
Вам писали:
Из #11 это оно? Может мне не стоит лезть в незнакомую область, но сильно смущает "nonzero" - в цвете более чем может быть "zero".
0
|
||
|
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
|
||||||
| 05.03.2017, 17:26 [ТС] | ||||||
|
GoodWeather, искал я по гуглу литературу и нашел только поиск через nonzero. Самому не нравится, но это в итоге не играет сути т.к цикл выполняется больше 10 секунд - гораздо больше 10 секунд. Вот еще одна версия пиллоу и нампи, на этот раз без такого поиска:
0
|
||||||
|
|
|
| 05.03.2017, 19:00 | |
|
гм... Виснуть тут может например этот вот "print", что он делает?
А если вместо него просто посчитать сколько на картинке например пикселей #FFFFFF? Добавлено через 2 минуты Я могу сделать на WinAPI. Вы сможете переписать на Питон? Или подключить к нему скомпилированную DLL с функцией? Какой функционал требуется?: Найти в скриншоте заданную мини-картинку 1:1 и выдать координаты угла прямоугольника? А как хранится искомое?
0
|
|
|
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
|
|||||||||||
| 05.03.2017, 21:52 [ТС] | |||||||||||
|
GoodWeather, тут еще новая проблема нарисовалась... В коде, который я бросал в предведущем посте обнаружился баг
Добавлено через 24 минуты Непонятно почему появляется эта ошибка. Попробовал вывести инфу о скрине экрана:
0
|
|||||||||||
|
|
|
| 05.03.2017, 23:28 | |
|
гм... Не знаю как в Питонах, а у нас в примитивных языках индексация начинается с нуля.
То есть при ширине 1280 диапазон [0..1279].Добавлено через 1 минуту Просто действие происходит 1280 x 1024 = 1310720 раз, если это конвертация числа в текст плюс отправка на какой-то некий вывод...
0
|
|
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||
| 05.03.2017, 23:30 | ||
|
0
|
||
| 06.03.2017, 01:21 | ||||||
|
Пример кода с матричным оператором сравнения:
Вывод программы: [[[ 2 1 19] [ 1 0 17] [ 2 1 19] [ 2 1 19] [ 0 0 20]] [[ 3 2 20] [ 1 0 18] [ 1 0 18] [ 0 0 18] [ 0 0 20]] [[ 3 1 19] [ 1 0 18] [ 0 0 18] [ 0 0 18] [ 0 1 21]]] ______ [[0 1 0] [0 1 1] [0 1 2] [0 4 1] [1 1 0] [1 1 1] [1 2 0] [1 2 1] [1 3 1] [1 4 1] [2 1 0] [2 1 1] [2 2 1] [2 3 1]] >>> Ответ, это координата 0,1. Только на этой координате в третьей колонке цифры 0,1,2 и только эти координаты встречаются в выводе три раза и матричные операторы работают намного быстрее циклов.
1
|
||||||
| 06.03.2017, 01:21 | |
|
Помогаю со студенческими работами здесь
20
Цвет определенного пикселя на экране Узнать цвет определенного пикселя на экране Поиск пикселя и поиск изображения на экране Поиск координат пикселя определенного цвета
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции:
Установка Android SDK, NDK, JDK, CMake и т. д.
Перейдите по ссылке:. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|