1 (изменено: Vicoriyan, 2017-08-20 22:09:25)

Тема: AHK: Определение цветовой гаммы картинки

0

2

Re: AHK: Определение цветовой гаммы картинки

Vicoriyan, просьба слишком расплывчатая. Чем не устраивает имеющийся пример от Strongest, и что непонятно?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: Vicoriyan, 2017-08-20 22:09:46)

Re: AHK: Определение цветовой гаммы картинки

0

4

Re: AHK: Определение цветовой гаммы картинки

Vicoriyan пишет:

У Strongest он запускает 3 файла, которые работают в одном потоке.

Три файла никак не могут работать в одном потоке. Это три разных процесса.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: Vicoriyan, 2017-08-20 22:09:56)

Re: AHK: Определение цветовой гаммы картинки

0

6

Re: AHK: Определение цветовой гаммы картинки

Для этого ничего делать не нужно. Просто запускаете файл, и он будет работать в своём отдельном процессе.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7 (изменено: Vicoriyan, 2017-08-20 22:10:04)

Re: AHK: Определение цветовой гаммы картинки

0

8

Re: AHK: Определение цветовой гаммы картинки

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

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: Vicoriyan, 2017-08-20 22:10:13)

Re: AHK: Определение цветовой гаммы картинки

0

10

Re: AHK: Определение цветовой гаммы картинки

Значит, таковы особенности поиска пикселей. Я, честно говоря, этой задачей подробно не интересовался, не знаю, как она реализована в AHK.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Определение цветовой гаммы картинки

Что это за поиск, который длится 2 минуты? Что конкретно ищется и где?

12

Re: AHK: Определение цветовой гаммы картинки

Vicoriyan, не следует цитировать предыдущее сообщение без особой нужды.

13 (изменено: Vicoriyan, 2017-08-20 22:10:21)

Re: AHK: Определение цветовой гаммы картинки

0

14 (изменено: Vicoriyan, 2017-08-20 22:10:32)

Re: AHK: Определение цветовой гаммы картинки

0

15 (изменено: stealzy, 2017-08-17 20:12:42)

Re: AHK: Определение цветовой гаммы картинки

На низком уровне эта команда состоит из двух: взятие буфера экрана и взятие пикселя из буфера. Если вы вызываете PixelGetColor для каждого пикселя, то буфер экрана вы обновляете столько же раз, отсюда и время.
Чтобы так не делать, используйте функции.

Upd:
Писал, еще не видя ваш ответ, для pixelsearch это тоже справеливо, раз вызываете ее 1000 раз - экономия будет от 30 до 100 секунд.

16 (изменено: Vicoriyan, 2017-08-20 22:10:40)

Re: AHK: Определение цветовой гаммы картинки

0

17

Re: AHK: Определение цветовой гаммы картинки

Это не арифметическая задачка - распараллеливание тут ничем не поможет, потому что бытулочное горлышко в другом - в шине передачи данных м/у видеопамятью и основной.
О этом можно догадаться и глядя в диспетчер задач - скрипт не загружает ядро полностью = параллезация не поможет.
Кстати в xp или на семерке с классической темой видеопамять не выделена, там операции с пикселями на порядок быстрее.
Что делать иначе, я вам уже написал выше.

18

Re: AHK: Определение цветовой гаммы картинки

Каждый из этих пикселей должен находится в конкретных координатах относительно области поиска?

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

19 (изменено: Vicoriyan, 2017-08-20 22:10:48)

Re: AHK: Определение цветовой гаммы картинки

0

20 (изменено: serzh82saratov, 2017-08-17 20:36:22)

Re: AHK: Определение цветовой гаммы картинки

А зачем вы ищете несколько пикселей если они могут быть разбросаны как угодно, в чём логика соответствия?

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

21 (изменено: Vicoriyan, 2017-08-20 22:10:56)

Re: AHK: Определение цветовой гаммы картинки

0

22

Re: AHK: Определение цветовой гаммы картинки

Vicoriyan, Вы читали Важнейшие правила? Код должен быть обрамлён соответствующим тегом. Исправьте!

23

Re: AHK: Определение цветовой гаммы картинки

Я думаю, тут надо алгоритм нормальный придумать оценки этой теплоты и холода. Я так понимаю, он зависит от соотношения красного, зелёного и синего. Так что если вычислить, так сказать, средний пиксель, как среднюю температуру по больнице, то его и можно потом оценить.

Или подсчитать, сколько пикселей холодных и сколько тёплых. Тут нужен способ различать их в этом отношении.

24 (изменено: stealzy, 2017-08-17 21:49:44)

Re: AHK: Определение цветовой гаммы картинки

YMP, так все давно придумано, кмк, тут просто велосипедим и костыляем по черному.

25

Re: AHK: Определение цветовой гаммы картинки

stealzy
Ну, в общем, выбор определяется тем, что более лень делать — гуглить и разбирать чужой алгоритм или придумывать свой. Мне обычно лень в чужом коде разбираться.

26 (изменено: Vicoriyan, 2017-08-20 22:11:07)

Re: AHK: Определение цветовой гаммы картинки

0

27 (изменено: Vicoriyan, 2017-08-20 22:11:15)

Re: AHK: Определение цветовой гаммы картинки

0

28

Re: AHK: Определение цветовой гаммы картинки

Кстати, как правильно будет выглядеть свой алгоритм variation?


V := 5  ;	Variation
MatchColor := 0xddeeff  ;	Искомый цвет

MR := (MatchColor & 0xFF)
MG := (MatchColor & 0xFF00) >> 8
MB := (MatchColor & 0xFF0000) >> 16 
	
ThisColor := 0xdaeafa

R := (ThisColor & 0xFF)
G := (ThisColor & 0xFF00) >> 8
B := (ThisColor & 0xFF0000) >> 16 

If (MR - V <= R && MR + V >= R
&& MG - V <= G && MG + V >= G
&& MB - V <= B && MB + V >= B)
	MsgBox Ok
MsgBox No
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

29

Re: AHK: Определение цветовой гаммы картинки

Помоему 80% пора перенести в новую тему - Сортировка пикселей по цвету.

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

30

Re: AHK: Определение цветовой гаммы картинки

serzh82saratov, там по ссылке упомянут Display_CompareColors() из Display.ahk.
[!] уже отправлен.

31 (изменено: YMP, 2017-08-18 09:41:48)

Re: AHK: Определение цветовой гаммы картинки

Vicoriyan пишет:

И вопрос, будет ли быстрее, если считать с картинки все пиксели по очереди, записать их в переменную, а потом сравнить с списком?

Откуда вы эти картинки берёте? Если из файлов, то почему оттуда и пиксели не брать? Если с экрана, то быстрее будет считать все пиксели в буфер один раз, а потом уже искать в нём ваши уникальные.

Кстати, в чём их уникальность?

Vicoriyan пишет:

Суть: - если пикселей определенного цвета больше, значит картинка соответствует поиску.

Что за определённый цвет, если у вас сотни цветов? По какому критерию вы их выбирали?

32 (изменено: Vicoriyan, 2017-08-20 22:11:30)

Re: AHK: Определение цветовой гаммы картинки

0

33

Re: AHK: Определение цветовой гаммы картинки

ИМХО пустая трата времени.
Я бы использовал сервисы определения капчи.

34

Re: AHK: Определение цветовой гаммы картинки

Надо отписаться в гугол, чтоб прикрыли баг с дорожными знаками.

35 (изменено: Vicoriyan, 2017-08-20 22:11:38)

Re: AHK: Определение цветовой гаммы картинки

0

36 (изменено: Vicoriyan, 2017-08-20 18:08:14)

Re: AHK: Определение цветовой гаммы картинки

Malcev Та просто попробовать свои силы и просто интересно. Решаешь проблему, что делаешь и за одно и учишься.

37

Re: AHK: Определение цветовой гаммы картинки

Тогда реальней пытаться чистить и распозновать аудио.

38 (изменено: Vicoriyan, 2017-08-20 22:11:47)

Re: AHK: Определение цветовой гаммы картинки

0

39

Re: AHK: Определение цветовой гаммы картинки

Gdip_BitmapFromScreen.

40 (изменено: Vicoriyan, 2017-08-20 22:12:06)

Re: AHK: Определение цветовой гаммы картинки

0

41 (изменено: Malcev, 2017-08-18 22:17:16)

Re: AHK: Определение цветовой гаммы картинки

Вот так у меня экран (1920x1080) меньше чем за 2 секунды прочёсывает.
Возвращает массив в ARGB:

a := A_TickCount
SetBatchLines, -1
CoordMode, Pixel, screen
pixelArray :=[]
pToken := Gdip_Startup()
pBitmap := Gdip_BitmapFromScreen()
width := Gdip_GetImageWidth(pBitmap)
height := Gdip_GetImageHeight(pBitmap)
E1 := Gdip_LockBits(pBitmap, 0, 0, width, height, Stride, Scan0, BitmapData)
loop % width
{
   A_Index_X := A_Index-1
   loop % height
      pixelArray[A_Index_X, A_Index-1] := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
}
Gdip_UnlockBits(pBitmap, BitmapData)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)
msgbox % A_TickCount - a

42 (изменено: Vicoriyan, 2017-08-20 22:12:14)

Re: AHK: Определение цветовой гаммы картинки

0

43

Re: AHK: Определение цветовой гаммы картинки

Он же сказал, возвращает массив pixelArray. А число это время работы в миллисекундах.

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

44 (изменено: Vicoriyan, 2017-08-20 22:12:25)

Re: AHK: Определение цветовой гаммы картинки

0

45

Re: AHK: Определение цветовой гаммы картинки

Если посмотреть описание функции Gdip_BitmapFromScreen, то там написано, что можно указать нужные координаты (x,y,w,h) для снимка:

SetBatchLines, -1
CoordMode, Pixel, screen
pixelArray :=[]
pToken := Gdip_Startup()
pBitmap := Gdip_BitmapFromScreen("100|0|50|150")
msgbox % width := Gdip_GetImageWidth(pBitmap)
msgbox % height := Gdip_GetImageHeight(pBitmap)
Gdip_LockBits(pBitmap, 0, 0, width, height, Stride, Scan0, BitmapData)
loop % width
{
   A_Index_X := A_Index-1
   loop % height
      pixelArray[A_Index_X, A_Index-1] := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
}
Gdip_UnlockBits(pBitmap, BitmapData)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)

46 (изменено: Vicoriyan, 2017-08-20 22:12:35)

Re: AHK: Определение цветовой гаммы картинки

0

47

Re: AHK: Определение цветовой гаммы картинки

Как сохранить все найденные пиксели в текст?

А зачем?

48 (изменено: Vicoriyan, 2017-08-20 22:12:42)

Re: AHK: Определение цветовой гаммы картинки

0

49

Re: AHK: Определение цветовой гаммы картинки

А почему вы не хотите узнавать это в цикле вместо создания массива?
И функция Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride) возвращает формат ARGB.
Поэтому для скорости лучше свою базу пикселей перевести тоже в ARGB.

50 (изменено: Vicoriyan, 2017-08-20 22:12:50)

Re: AHK: Определение цветовой гаммы картинки

0

51 (изменено: Malcev, 2017-08-19 17:04:53)

Re: AHK: Определение цветовой гаммы картинки

Функция PixelColor := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride) возвращает цвет пикселя, находящийся в координатах A_Index_X и  A_Index-1.

52 (изменено: Vicoriyan, 2017-08-20 22:12:56)

Re: AHK: Определение цветовой гаммы картинки

0

53

Re: AHK: Определение цветовой гаммы картинки

Скрипт сканирует все пиксели в цикле (вставил msgbox для наглядности):

loop % width
{
   A_Index_X := A_Index-1
   loop % height
      msgbox % Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
}

54 (изменено: Vicoriyan, 2017-08-20 22:13:05)

Re: AHK: Определение цветовой гаммы картинки

0

55 (изменено: Vicoriyan, 2017-08-20 22:13:15)

Re: AHK: Определение цветовой гаммы картинки

0

56

Re: AHK: Определение цветовой гаммы картинки

Вы всегда можете проверить доходит ли скрипт до определенного места с помощью msgbox.
Если в цикле более чем 1 строка, то его следует обрамлять в фигурные скобки.
Зачем вам так нужно сохранять значения в файл я так и не понял.
Проверяйте в цикле:

loop % width
{
   A_Index_X := A_Index-1
   loop % height
   {
      if (Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride) = "your_color")
         msgbox found
   }
}

57

Re: AHK: Определение цветовой гаммы картинки

В фигурные скобки лучше обрамлять всегда. Это понимаешь после того, как несколько раз добавишь ещё одну команду, а скобки добавить забудешь.

58 (изменено: serzh82saratov, 2017-08-19 21:59:47)

Re: AHK: Определение цветовой гаммы картинки

stealzy пишет:

serzh82saratov, там по ссылке упомянут Display_CompareColors() из Display.ahk.
[!] уже отправлен.

Где там?

АП:
Гугль помог, там тоже самое.

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

59 (изменено: Vicoriyan, 2017-08-20 22:13:27)

Re: AHK: Определение цветовой гаммы картинки

0

60

Re: AHK: Определение цветовой гаммы картинки

Гугловскую капчу ломать бесполезное занятие.

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

61 (изменено: Vicoriyan, 2017-08-20 22:13:34)

Re: AHK: Определение цветовой гаммы картинки

0

62

Re: AHK: Определение цветовой гаммы картинки

#include gdip.ahk

SetBatchLines, -1
CoordMode, Pixel, screen
pixelArray :=[]
pToken := Gdip_Startup()
pBitmap := Gdip_BitmapFromScreen("100|0|50|150")
width := Gdip_GetImageWidth(pBitmap)
height := Gdip_GetImageHeight(pBitmap)
Gdip_LockBits(pBitmap, 0, 0, width, height, Stride, Scan0, BitmapData)
loop % width
{
   A_Index_X := A_Index-1
   loop % height
   {
      pixelArray[A_Index_X, A_Index-1] := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
      var := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
      PrevFormat := A_FormatInteger
      SetFormat, IntegerFast, H
      FileAppend, %var%`n, potok-kod_2.ini
      SetFormat, IntegerFast, % PrevFormat
   }
}
Gdip_UnlockBits(pBitmap, BitmapData)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)

Чтобы выполнить вашу задачу в файл записывать не надо.
Можно просто сделать 16 циклов, по количеству картинок и подсчитывать совпадения.
Но попробуйте с файлом, если вам так удобно  - всё равно вы придете к тому, что обойти гугловскую капчу можно только с помощью ручного труда китайцев, и бросите эту затею.

63 (изменено: Vicoriyan, 2017-08-20 22:13:47)

Re: AHK: Определение цветовой гаммы картинки

0

64

Re: AHK: Определение цветовой гаммы картинки

Вставьте счетчик итераций:

SetBatchLines, -1
CoordMode, Pixel, screen
pixelArray :=[]
pToken := Gdip_Startup()
pBitmap := Gdip_BitmapFromScreen("100|0|50|150")
width := Gdip_GetImageWidth(pBitmap)
height := Gdip_GetImageHeight(pBitmap)
Gdip_LockBits(pBitmap, 0, 0, width, height, Stride, Scan0, BitmapData)
loop % width
{
   loop % height
   {
      a++
   }
}
Gdip_UnlockBits(pBitmap, BitmapData)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)
msgbox % a

65 (изменено: Vicoriyan, 2017-08-20 22:13:56)

Re: AHK: Определение цветовой гаммы картинки

0

66

Re: AHK: Определение цветовой гаммы картинки

Vicoriyan пишет:

Может я иду не по правильному пути и можно это все организовать проще? все может быть. Я тока изучаю autohotkey и естественно будут грубые ошибки и дурные вопросы.

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

67 (изменено: Vicoriyan, 2017-08-20 22:14:03)

Re: AHK: Определение цветовой гаммы картинки

0

68

Re: AHK: Определение цветовой гаммы картинки

Ага. Ещё спросите: где я и кто все эти люди?

69 (изменено: Vicoriyan, 2017-08-20 22:14:12)

Re: AHK: Определение цветовой гаммы картинки

0

70

Re: AHK: Определение цветовой гаммы картинки

Vicoriyan, гуглите алгоритм: street sign detection.

71 (изменено: Vicoriyan, 2017-08-20 22:14:23)

Re: AHK: Определение цветовой гаммы картинки

0

72

Re: AHK: Определение цветовой гаммы картинки

Vicoriyan, предложения должны начинаться с заглавной буквы и заканчиваться точкой. Исправьте!
http://forum.script-coding.com/viewtopi … 47#p118347
http://forum.script-coding.com/viewtopi … 65#p118365
http://forum.script-coding.com/viewtopi … 62#p118462
http://forum.script-coding.com/viewtopi … 73#p118473
http://forum.script-coding.com/viewtopi … 93#p118493
http://forum.script-coding.com/viewtopi … 01#p118501
http://forum.script-coding.com/viewtopi … 14#p118514
http://forum.script-coding.com/viewtopi … 26#p118526
http://forum.script-coding.com/viewtopi … 26#p118526
http://forum.script-coding.com/viewtopi … 53#p118553
http://forum.script-coding.com/viewtopi … 53#p118553
http://forum.script-coding.com/viewtopi … 59#p118559
http://forum.script-coding.com/viewtopi … 59#p118559
http://forum.script-coding.com/viewtopi … 69#p118569
http://forum.script-coding.com/viewtopi … 69#p118569
http://forum.script-coding.com/viewtopi … 71#p118571
http://forum.script-coding.com/viewtopi … 86#p118586

73 (изменено: Vicoriyan, 2017-08-20 22:14:32)

Re: AHK: Определение цветовой гаммы картинки

0

74

Re: AHK: Определение цветовой гаммы картинки

На исправления три дня. http://i.smiles2k.net/aiwan_smiles/butcher.gif

75

Re: AHK: Определение цветовой гаммы картинки

Удаляйте тему. Она никаму не интересна, а меня тока дураком выставляет.