<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Вариация при поиске пикселей]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=12938</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=12938&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Вариация при поиске пикселей».]]></description>
		<lastBuildDate>Tue, 06 Dec 2022 14:34:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=155865#p155865</link>
			<description><![CDATA[<p><strong>teadrinker</strong> Колоссальное Вам спасибо, Учитель!</p>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Tue, 06 Dec 2022 14:34:56 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=155865#p155865</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=155863#p155863</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 06 Dec 2022 14:30:46 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=155863#p155863</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=155862#p155862</link>
			<description><![CDATA[<p><strong>teadrinker</strong> в том то и горький катаклизм, дорогой Вы мой человек, что курсор уезжает в угол совершенно напрасно, ибо область поиска совсем не там, он уезжает просто на нулевую точку, вне зависимости от того, какие координаты я вписываю и какой цвет задаю, от того и вопрос, куда и как их, координаты, все таки вписывать по-православному. За ответ Вам в любом случае большое спасибо!Всё таки хотелось бы раскрыть и&nbsp; тему того, как же все таки от отраженных в переменных пересчитанных пикселях, что либо предпринять?</p>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Tue, 06 Dec 2022 14:26:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=155862#p155862</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=155858#p155858</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 06 Dec 2022 13:29:52 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=155858#p155858</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=155854#p155854</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Tue, 06 Dec 2022 04:02:19 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=155854#p155854</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=155851#p155851</link>
			<description><![CDATA[<div class="quotebox"><cite>pixel75 пишет:</cite><blockquote><p>что я делаю не так, просто скопировав код уважаемого serzh82saratov</p></blockquote></div><p>Если вы процитируете код, который используете, отвечающим не придётся его разыскивать, что повысит шанс на ответ.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 05 Dec 2022 22:17:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=155851#p155851</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=155848#p155848</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Mon, 05 Dec 2022 19:18:25 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=155848#p155848</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118829#p118829</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Vicoriyan)]]></author>
			<pubDate>Sun, 27 Aug 2017 11:38:11 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118829#p118829</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118778#p118778</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong> Да.</p>]]></description>
			<author><![CDATA[null@example.com (Vicoriyan)]]></author>
			<pubDate>Fri, 25 Aug 2017 17:02:00 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118778#p118778</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118775#p118775</link>
			<description><![CDATA[<div class="codebox"><pre><code>
width := Gdip_GetImageWidth(pBitmap)
height := Gdip_GetImageHeight(pBitmap) 


width := 500
height := 500
</code></pre></div><p>Меняли?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 25 Aug 2017 15:33:47 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118775#p118775</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118773#p118773</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (Vicoriyan)]]></author>
			<pubDate>Fri, 25 Aug 2017 15:32:19 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118773#p118773</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118763#p118763</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong> В принципе так и думал, но неуверенность взяла свое. Спасибо большое за разъяснение.</p>]]></description>
			<author><![CDATA[null@example.com (Vicoriyan)]]></author>
			<pubDate>Thu, 24 Aug 2017 19:44:43 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118763#p118763</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118762#p118762</link>
			<description><![CDATA[<p>Указывайте область здесь, вместо нулей х у. </p><div class="codebox"><pre><code>Gdip_LockBits(pBitmap, 0, 0, 500, 500, Stride, Scan0, BitmapData)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 24 Aug 2017 19:42:55 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118762#p118762</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118761#p118761</link>
			<description><![CDATA[<p>Тогда вопрос чем-то похожий на вопрос от becauseim. Если у меня картинка 1200х900 и мне нужно в пределах этого расширения картинки назначить область сканирования 500х500?</p>]]></description>
			<author><![CDATA[null@example.com (Vicoriyan)]]></author>
			<pubDate>Thu, 24 Aug 2017 19:41:44 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118761#p118761</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Вариация при поиске пикселей]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=118758#p118758</link>
			<description><![CDATA[<p>Можно и так.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 24 Aug 2017 19:31:18 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=118758#p118758</guid>
		</item>
	</channel>
</rss>
