1

Тема: AHK: Определение позиции в контуре

Как определить что точка находится внутри контура? С прямоугольником всё просто, а как быть с другими фигурами?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2

Re: AHK: Определение позиции в контуре

OpenCv pointPolygonTest().

3

Re: AHK: Определение позиции в контуре

Да не, слишком затратно.
В GDIP есть подобное про Path, там хорошо работало, по памяти говорю.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Определение позиции в контуре

Gdip_IsVisiblePathPoint

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Определение позиции в контуре

http://www.jose.it-berater.org/gdiplus/ … hpoint.htm

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Определение позиции в контуре

У меня как всегда... Сначала спросил, потом подумал по теме.

Вопрос теперь другой получается при наличии Gdip_IsVisiblePathPoint. Есть например на экране контур какого то цвета, как из него сделать Gdi Path?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Определение позиции в контуре

Для таких случаев используется opencv.
Чего в нем затратного?

8

Re: AHK: Определение позиции в контуре

Долго будет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Определение позиции в контуре

Надо 10 раз в секунду как минимум, без заметной нагрузки.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: Определение позиции в контуре

А ты проверял?

11

Re: AHK: Определение позиции в контуре

serzh82saratov пишет:

Есть например на экране контур какого то цвета

Он из точек уникального цвета.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: Определение позиции в контуре

Malcev пишет:

А ты проверял?

А ты?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Определение позиции в контуре

Именно эту функцию нет.

14

Re: AHK: Определение позиции в контуре

В целом OpenCv это файлы, и не маленькие, уже это не вариант.

Я им как то баловался, не сказать что моментально работало. Ему же ещё каждый раз надо будет сам контур определять, а потом уже точку, хотя не уверен.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

Re: AHK: Определение позиции в контуре

serzh82saratov пишет:

Есть например на экране контур какого то цвета, как из него сделать Gdi Path?

Если забыть про сторонние решения, то каков мог бы быть алгоритм? Интересный вопрос, как по мне.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16

Re: AHK: Определение позиции в контуре

serzh82saratov пишет:

В целом OpenCv это файлы, и не маленькие, уже это не вариант.

Ну тогда придется разрабатывать собственный алгоритм определения контура со снимка экрана и отрисовывать его в gdi+.

serzh82saratov пишет:

Ему же ещё каждый раз надо будет сам контур определять, а потом уже точку, хотя не уверен.

Если контур не меняется, то не нужно.
Я с помощью opencv делал несколько капча-брейкеров - вроде систему не нагружало.

17

Re: AHK: Определение позиции в контуре

serzh82saratov пишет:

Если забыть про сторонние решения, то каков мог бы быть алгоритм?

Например:
https://theailearner.com/2019/11/19/suz … cv-python/

18

Re: AHK: Определение позиции в контуре

serzh82saratov пишет:

Как определить что точка находится внутри контура?

Просто интересно, вопрос про точечные (растровые) рисунки или векторную графику?

19 (изменено: Malcev, 2022-12-04 00:18:39)

Re: AHK: Определение позиции в контуре

serzh82saratov, у opencv открытые исходники, почитай как там определяются контуры и как потом высчитывается положение точки.
На основе opencv кода, напиши собственный код на c++ и потом вызывай его, как машинный код из ahk.
Ну или на stackoverflow можно покопаться, например:
https://stackoverflow.com/questions/217 … on/2922778
Задача в целом не архисложная - все зависит от мотивации.

20 (изменено: serzh82saratov, 2022-12-04 09:16:26)

Re: AHK: Определение позиции в контуре

ypppu пишет:
serzh82saratov пишет:

Как определить что точка находится внутри контура?

Просто интересно, вопрос про точечные (растровые) рисунки или векторную графику?

Графика векторная, но иметь с неё можно только скрин, то есть точки.
Malcev
На такие изучения у меня времени куча уйдёт, мотивации не хватит.
Так как в моём случае не предполагается вогнутых контуров, то проще разбить на четыре сектора слева - справа и сверху - снизу, найти крайние бирюзовые пиксели и по строкам искать в этих зонах.
У меня прикладная задача найти все не белые точки вне бирюзового контура.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

21 (изменено: ypppu, 2022-12-04 13:17:17)

Re: AHK: Определение позиции в контуре

То есть мы имеем криволинейный контур в виде точечного рисунка и точку. Точка есть обязательно, но она может быть внутри контура, либо снаружи контура. Задача в том, чтобы однозначно сказать, внутри находится точка или снаружи, так?
Мне просто сразу мысль пришла, как если бы я в программе Paint нарисовал некий контур и точку. А потом сделал бы "заливку цветом" рядом с точкой. Если при этом залилось всё вокруг контура, значит точка снаружи. Если же залилось всё внутри контура, значит точка внутри.

22

Re: AHK: Определение позиции в контуре

Еще как вариант, на kwork.ru найти c++-шника и заказать выполнение данной задачи за 500-1000 рублей.
Пару раз сам так делал.

23

Re: AHK: Определение позиции в контуре

Поиск через 'ImageSearch' не решит проблему случайно?

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

24

Re: AHK: Определение позиции в контуре

Так как важна скорость и нужно перебирать все точки снаружи контура, то нужно через машинный код.
Я вижу это как 2 функции:
Первая возвращает по заданному цвету (либо по каким-то другим признакам) вершины полигона.
Вторая -  на входе даем координаты вершин, на выходе получаем массив с точками.