<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Вариация при поиске пикселей]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12938&amp;type=atom" />
	<updated>2022-12-06T14:34:56Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=12938</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=155865#p155865" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> Колоссальное Вам спасибо, Учитель!</p>]]></content>
			<author>
				<name><![CDATA[pixel75]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41268</uri>
			</author>
			<updated>2022-12-06T14:34:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=155865#p155865</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=155863#p155863" />
			<content type="html"><![CDATA[<p>А, вижу, что код не адаптирован под область поиска, начинающуюся не с 0, 0.<br />Замените<br /></p><div class="codebox"><pre><code>MouseMove, A_Index_X, A_Index-1, 20 </code></pre></div><p>на<br /></p><div class="codebox"><pre><code>MouseMove, A_Index_X + x, A_Index-1 + y, 20 </code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-12-06T14:30:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=155863#p155863</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=155862#p155862" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> в том то и горький катаклизм, дорогой Вы мой человек, что курсор уезжает в угол совершенно напрасно, ибо область поиска совсем не там, он уезжает просто на нулевую точку, вне зависимости от того, какие координаты я вписываю и какой цвет задаю, от того и вопрос, куда и как их, координаты, все таки вписывать по-православному. За ответ Вам в любом случае большое спасибо!Всё таки хотелось бы раскрыть и&nbsp; тему того, как же все таки от отраженных в переменных пересчитанных пикселях, что либо предпринять?</p>]]></content>
			<author>
				<name><![CDATA[pixel75]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41268</uri>
			</author>
			<updated>2022-12-06T14:26:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=155862#p155862</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=155858#p155858" />
			<content type="html"><![CDATA[<p>С виду всё правильно, только много лишних или неиспользуемых переменных: <em>Start</em> и <em>n</em> не используются, <em>width</em> и <em>height</em> не нужно получать заново, ведь ширина и высота уже есть, их нужно только присвоить переменным.</p><div class="quotebox"><cite>pixel75 пишет:</cite><blockquote><p>При запуске скрипта, либо ничего не происходит, ибо, вероятно цвет не найден, либо курсор уезжает на 0, 0 коодинаты</p></blockquote></div><p>Если не происходит, значит не найдено, если уезжает, значит найдено в соответствующих координатах.</p><div class="quotebox"><cite>pixel75 пишет:</cite><blockquote><p>можно ли вместо цифр координат, запихнуть названия переменных, отражающих координаты</p></blockquote></div><p>Можно, используя синтаксис <a href="https://www.autohotkey.com/docs/Language.htm#expressions">выражений</a>:<br /></p><div class="codebox"><pre><code>x := 0, y := 0, width := 140 - 79, height := 230 - 166
pBitmap := Gdip_BitmapFromScreen(x . &quot;|&quot; . y &quot;|&quot; . width . &quot;|&quot; . height)
Gdip_LockBits(pBitmap, 0, 0, width, height, Stride, Scan0, BitmapData)

bgr1 := SearchPixel
loop % width
{
...</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-12-06T13:29:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=155858#p155858</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=155854#p155854" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong>, извините, видит Бог, старался придерживаться правила об избыточном цитировании. Да и переменной &quot;n&quot;, отражавшей количество совпадений, в этой редакции, увы, нет. От себя добавил лишь горячую клавишу запуска. При запуске скрипта, либо ничего не происходит, ибо, вероятно цвет не найден, либо курсор уезжает на 0, 0 коодинаты. С Вашего позволения, напомню, что мне нужно в небольшом прямоугольнике координат сосчитать пиксели одного цвета, в идеале обозвав их количество Переменной_1, а количество близких по спектру Переменной_2, и исходя из количества найденных пикселей в области, ( 30 точных, 65 приблизительных, например), совершить любое действие. И если можно, поясните пожалуйста, можно ли вместо цифр координат, запихнуть названия переменных, отражающих координаты, с учетом того, что последние всякий новый Loop моего скрипта, будут меняться динамически?<br /></p><div class="codebox"><pre><code>; как сместить курсор на заданный или близкий по оттенку цвет, в диапазоне координат экрана от x79 y166  до x140 y230?
; tochka_x := 383
; tochka_y := 167
F6:: 	
SetBatchLines, -1
CoordMode, Pixel, screen
CoordMode, Mouse, screen
pToken := Gdip_Startup()

SearchPixel := 0x3641FC
variation := 0x1

pBitmap := Gdip_BitmapFromScreen(&quot;79|166|&quot; 140 - 79 &quot;|&quot; 230 - 166)
width := Gdip_GetImageWidth(pBitmap)
height := Gdip_GetImageHeight(pBitmap) 
Gdip_LockBits(pBitmap, 0, 0, width, height, Stride, Scan0, BitmapData)

Start := A_TickCount
bgr1 := SearchPixel
loop % width + (n:=0)
{
	A_Index_X := A_Index-1
	loop % height
	{ 
		bgr2 := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
		if !(abs((bgr1 &amp; 0xff) - (bgr2 &amp; 0xff)) &gt; variation)
		&amp;&amp; !(abs(((bgr1 &gt;&gt; 8) &amp; 0xff) - ((bgr2 &gt;&gt; 8) &amp; 0xff)) &gt; variation)
		&amp;&amp; !(abs(((bgr1 &gt;&gt; 16) &amp; 0xff) - ((bgr2 &gt;&gt; 16) &amp; 0xff)) &gt; variation)
		{
			MouseMove, A_Index_X, A_Index-1, 20 
			Break 2
		}
	}
}
Gdip_UnlockBits(pBitmap, BitmapData)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)  
Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[pixel75]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41268</uri>
			</author>
			<updated>2022-12-06T04:02:19Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=155854#p155854</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=155851#p155851" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>pixel75 пишет:</cite><blockquote><p>что я делаю не так, просто скопировав код уважаемого serzh82saratov</p></blockquote></div><p>Если вы процитируете код, который используете, отвечающим не придётся его разыскивать, что повысит шанс на ответ.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-12-05T22:17:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=155851#p155851</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=155848#p155848" />
			<content type="html"><![CDATA[<p>Простите великодушно господа, нет у меня в &quot;битмапах&quot; хоть сколько нибудь понимания, куда же всё таки вставлять верхнюю левую точку прямоугольника координат, в котором будут считаться пиксели искомого мною цвета?&nbsp; То ли сюда:&nbsp; Gdip_LockBits(pBitmap, 0, 0, 500, 500, Stride, Scan0, BitmapData) как указывал достопочтенный serzh82saratov, то ли сюда:&nbsp; pBitmap := Gdip_BitmapFromScreen(&quot;1230|80|&quot; 2040 - 1230 &quot;|&quot; 550 - 80), как было у автора поста.&nbsp; Понятно, что фигурирует начальная точка и ширина и высота, но не понятно, почему курсор у меня тупо уезжает на координаты 0,0 в начало экрана в обоих случаях вместо того, чтобы кликнуть на ярлык красного цвета на рабочем столе. Тот случай, когда за годы накорябал сотни рабочих скриптов на AHK, а вот в этих &quot;битмапах&quot; - дуб дубом.<br />Тыкаюсь с вариантами сутки без сна, с головой, как трансформаторная будка и только злюсь. Помогите кто может, ткните как котенка мордой в лужу, что я делаю не так, просто скопировав код уважаемого serzh82saratov, вставляя свои координаты? Мне нужно в небольшом прямоугольнике координат сосчитать пиксели одного цвета ( хрен с ним, не уходя в дебри с оттенками) и исходя из количества найденных пикселей в области ( 30 например), совершить любое действие. И если можно, поясните пожалуйста, можно ли вместо цифр координат, запихнуть туда названия переменных их отражающих?</p>]]></content>
			<author>
				<name><![CDATA[pixel75]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41268</uri>
			</author>
			<updated>2022-12-05T19:18:25Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=155848#p155848</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118829#p118829" />
			<content type="html"><![CDATA[<p>А если мне нужно просканировать несколько участков на одной картинке, то сделать можно создав дополнительный цикл с другими координатами или можно как-то по короче сделать?</p><p>Я создал дополнительный цикл и он работает:<br /></p><div class="codebox"><pre><code>variation := 0x5
ArrayCount = 0
n1:=0
n2:=0
Loop, Read, potok-kod_2.ini
{
ArrayCount += 1
Array%ArrayCount% := A_LoopReadLine
}
Loop %ArrayCount%
{
SearchPixel := Array%A_Index%
SetBatchLines, -1
CoordMode, Pixel, screen
pToken := Gdip_Startup()
pBitmap := Gdip_CreateBitmapFromFile(&quot;payload.jpg&quot;)
width := 500
height := 500
Gdip_LockBits(pBitmap, 0, 0, width, height, Stride, Scan0, BitmapData)

bgr1 := SearchPixel
loop % width
{
A_Index_X := A_Index-1
loop % height
{ 
bgr2 := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
if !(abs((bgr1 &amp; 0xff) - (bgr2 &amp; 0xff)) &gt; variation)
&amp;&amp; !(abs(((bgr1 &gt;&gt; 8) &amp; 0xff) - ((bgr2 &gt;&gt; 8) &amp; 0xff)) &gt; variation)
&amp;&amp; !(abs(((bgr1 &gt;&gt; 16) &amp; 0xff) - ((bgr2 &gt;&gt; 16) &amp; 0xff)) &gt; variation)
n1++
}
}

pBitmap := Gdip_CreateBitmapFromFile(&quot;payload.jpg&quot;)
width := 500
height := 500
Gdip_LockBits(pBitmap, 510, 0, width, height, Stride, Scan0, BitmapData)

bgr1 := SearchPixel
loop % width
{
A_Index_X := A_Index-1
loop % height
{ 
bgr2 := Gdip_GetLockBitPixel(Scan0, A_Index_X, A_Index-1, Stride)
if !(abs((bgr1 &amp; 0xff) - (bgr2 &amp; 0xff)) &gt; variation)
&amp;&amp; !(abs(((bgr1 &gt;&gt; 8) &amp; 0xff) - ((bgr2 &gt;&gt; 8) &amp; 0xff)) &gt; variation)
&amp;&amp; !(abs(((bgr1 &gt;&gt; 16) &amp; 0xff) - ((bgr2 &gt;&gt; 16) &amp; 0xff)) &gt; variation)
n2++
}
}
Gdip_UnlockBits(pBitmap, BitmapData)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)
}
MsgBox, %n1% %n2%</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Vicoriyan]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38658</uri>
			</author>
			<updated>2017-08-27T11:38:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118829#p118829</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118778#p118778" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong> Да.</p>]]></content>
			<author>
				<name><![CDATA[Vicoriyan]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38658</uri>
			</author>
			<updated>2017-08-25T17:02:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118778#p118778</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118775#p118775" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
width := Gdip_GetImageWidth(pBitmap)
height := Gdip_GetImageHeight(pBitmap) 


width := 500
height := 500
</code></pre></div><p>Меняли?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-08-25T15:33:47Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118775#p118775</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118773#p118773" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong> Сегодня проверил и увидел, что не работает. Вставил координаты и назначил поле для сканирования и результата вообще никакого нет.<br /></p><div class="codebox"><pre><code>Gdip_LockBits(pBitmap, 210, 110, 500, 500, Stride, Scan0, BitmapData)</code></pre></div><p>Ошибки тоже нет. Ставлю вместо 210, 110, нули и он мне показывает пиксели всей картинки.</p>]]></content>
			<author>
				<name><![CDATA[Vicoriyan]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38658</uri>
			</author>
			<updated>2017-08-25T15:32:19Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118773#p118773</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118763#p118763" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong> В принципе так и думал, но неуверенность взяла свое. Спасибо большое за разъяснение.</p>]]></content>
			<author>
				<name><![CDATA[Vicoriyan]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38658</uri>
			</author>
			<updated>2017-08-24T19:44:43Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118763#p118763</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118762#p118762" />
			<content type="html"><![CDATA[<p>Указывайте область здесь, вместо нулей х у. </p><div class="codebox"><pre><code>Gdip_LockBits(pBitmap, 0, 0, 500, 500, Stride, Scan0, BitmapData)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-08-24T19:42:55Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118762#p118762</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118761#p118761" />
			<content type="html"><![CDATA[<p>Тогда вопрос чем-то похожий на вопрос от becauseim. Если у меня картинка 1200х900 и мне нужно в пределах этого расширения картинки назначить область сканирования 500х500?</p>]]></content>
			<author>
				<name><![CDATA[Vicoriyan]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38658</uri>
			</author>
			<updated>2017-08-24T19:41:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118761#p118761</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=118758#p118758" />
			<content type="html"><![CDATA[<p>Можно и так.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2017-08-24T19:31:18Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=118758#p118758</id>
		</entry>
</feed>
