<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: OpenCV определение лица]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=14477</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14477&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: OpenCV определение лица».]]></description>
		<lastBuildDate>Sat, 06 Nov 2021 19:08:20 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150513#p150513</link>
			<description><![CDATA[<p>Да, не. Там всё несложно.<br /><a href="http://forum.script-coding.com/viewtopic.php?id=16712">http://forum.script-coding.com/viewtopic.php?id=16712</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 06 Nov 2021 19:08:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150513#p150513</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150511#p150511</link>
			<description><![CDATA[<p>Вау! Пробовал что-то?<br />UPD: Рано обрадовался, думал, это новая нативная фича у них появилась, а так только с AutoIt можно использовать, перевести всё это проблематично.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 06 Nov 2021 18:43:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150511#p150511</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150510#p150510</link>
			<description><![CDATA[<p>OpenCV v4 COM:<br /><a href="https://www.autoitscript.com/forum/topic/206432-opencv-v4-udf">https://www.autoitscript.com/forum/topi … ncv-v4-udf</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 06 Nov 2021 17:35:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150510#p150510</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144877#p144877</link>
			<description><![CDATA[<p><strong>Malcev</strong>&nbsp; Вы истинный волшебник, спасибо, что Вы есть!</p>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Sat, 16 Jan 2021 11:53:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144877#p144877</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144868#p144868</link>
			<description><![CDATA[<div class="codebox"><pre><code>file1 := &quot;1.jpg&quot;
file2 := &quot;2.jpg&quot;

;start dll opencv
Global opencv := { opencv_core: &quot;opencv_core2413.dll&quot;
, opencv_highgui: &quot;opencv_highgui2413.dll&quot;
, opencv_imgproc: &quot;opencv_imgproc2413.dll&quot; }
_OpenCV_Startup()

;// load IPL type image both images must have same number of bits and color channels!
pimg := _cvLoadImage(file1)
ptemp := _cvLoadImage(file2) ;image to look for

;// Determine images height and width to create results matrix
_cvGetSize(pimg, width, height)
_cvGetSize(ptemp, width2, height2)
rw :=  width - width2 + 1
rh :=  height - height2 + 1

;// Create Opencv matrix object 32 bit floating
presult := _cvCreateMat(rh, rw, CV_32FC1 := 5)

;// Template matching
_cvMatchTemplate(pimg, ptemp, presult, CV_TM_CCOEFF_NORMED := 5)
_cvNormalize(presult, presult, 0, CV_C := 1, CV_MINMAX := 32, 0)
_cvThreshold(presult, presult, thresh := 0.9, maxval := 1, CV_THRESH_BINARY := 0)

;//locate matches
;// Create minmax variables to pass to opencv
VarSetCapacity(pmaxloc, 8, 0)
VarSetCapacity(pminloc, 8, 0)
VarSetCapacity(pmaxval, 8, 0)
VarSetCapacity(pminval, 8, 0)

;// Find location of maximum
_cvMinMaxLoc(presult, &amp;pminval, &amp;pmaxval, &amp;pminloc, &amp;pmaxloc, pmask)

msgbox % NumGet(pmaxloc, 0, &quot;int&quot;) &quot;`n&quot; NumGet(pmaxloc, 4, &quot;int&quot;)
_cvReleaseMat(presult)
_cvReleaseImage(ptemp)
_cvReleaseImage(pimg)
_Opencv_CloseDLL()
ExitApp</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 16 Jan 2021 10:30:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144868#p144868</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144864#p144864</link>
			<description><![CDATA[<p>Слепил из любезно предоставленного кода выше, функцию, в которую мне удобно передавать начальную точку поиска фрагмента, его ширину и высоту, коэффициент совпадения, и два имени файла - шаблон и искомое. <br /></p><div class="codebox"><pre><code>
	poisk_image(x, y, w, h, coef_sovp, f1, f2)
	{
		file1 := f1
		file2 := f2
		window := &quot;gui&quot;	
		_OpenCV_Startup()		
		pimg := _cvLoadImage(file1)		; базовый скриншот
		ptemp := _cvLoadImage(file2) 		; искомое изображение			
		_cvNamedWindow(window)
		_cvShowImage(window, pimg)
		_cvGetSize(pimg, width, height)
		_cvGetSize(ptemp, width2, height2)
		rw :=  width - width2 + 1
		rh :=  height - height2 + 1
		presult := _cvCreateMat(rh, rw, CV_32FC1 := 5)
		_cvMatchTemplate(pimg, ptemp, presult, CV_TM_CCOEFF_NORMED := 5)		
		_cvNormalize(presult, presult, 0, CV_C := 1, CV_MINMAX := 32, 0)
		_cvThreshold(presult, presult, coef_sovp, maxval := 1, CV_THRESH_BINARY := 0)
		VarSetCapacity(pmaxloc, 8, 0)
		VarSetCapacity(pminloc, 8, 0)
		VarSetCapacity(pmaxval, 8, 0)
		VarSetCapacity(pminval, 8, 0)
		pmask := _cvCreateImage(_cvSize(rw, rh), IPL_DEPTH_8U := 8, channels := 1)		
		_cvSet(pmask, _cvScalar(vScalar, 1))
		; Найти местоположение максимума
		_cvMinMaxLoc(presult, &amp;pminval, &amp;pmaxval, &amp;pminloc, &amp;pmaxloc, pmask)	

		loop
		{	; все, найденные со схожестью thresh := 0.94, подобия на базовом изображении 
			; обрамляется красной рамкой, если найдены
			_cvRectangle(pmask, _cvPoint(NumGet(pmaxloc, 0, &quot;int&quot;)-5, NumGet(pmaxloc, 4, &quot;int&quot;)-5), _cvPoint(NumGet(pmaxloc, 0, &quot;int&quot;)+ width2, NumGet(pmaxloc, 4, &quot;int&quot;)+height2), _cvScalar(vScalar, 0), -1, 8, 0)
			_cvRectangle(pimg, _cvPoint(NumGet(pmaxloc, 0, &quot;int&quot;)-5, NumGet(pmaxloc, 4, &quot;int&quot;)-5), _cvPoint(NumGet(pmaxloc, 0, &quot;int&quot;)+ width2+10, NumGet(pmaxloc, 4, &quot;int&quot;)+height2+10), _CV_RGB(vScalar, 255, 0, 0), 2, 8, 0)
			; вывод обновлённого базового изображения
			_cvShowImage(window, pimg)
			; найти местоположение максимума			
			_cvMinMaxLoc(presult, &amp;pminval, &amp;pmaxval, &amp;pminloc, &amp;pmaxloc, pmask)
			; где &amp;pminval - указатель на возвращаемое минимальное значение
			; &amp;pmaxval - указатель на возвращаемое максимальное значение
			; &amp;pminloc - указатель на возвращаемое минимальное местоположение
			; &amp;pmaxloc - указатель на максимальное возвращаемое местоположение
			; pmask - необязательная маска, которая используется для выбора подмассива			
			if (NumGet(pmaxval, 0, &quot;double&quot;) &lt; 0.99)
				break
			Sleep 100
		}
		Return
	}

	poisk_image(1645, 204, 120, 250, 0.94, f1 := &quot;1.jpg&quot;, f2 := &quot;2.jpg&quot;)

	Msgbox done
	_cvReleaseImage(pmask)
	_cvReleaseMat(presult)
	_cvReleaseImage(ptemp)
	_cvReleaseImage(pimg)
	_cvDestroyAllWindows()
	_Opencv_CloseDLL()
</code></pre></div><p>Прошу о помощи по пунктам: <br />1. Откуда теперь собственно можно вычленить готовую точку координат найденного искомого, чтобы я потом мог кликать на найденный фрагмент или принимать решение в зависимости от того, нашелся фрагмент или нет в заданном коэффициенте совпадения?<br />2. Как убрать отображение окон базового скриншота, результата поиска, прорисовку чертовых рамок ,которые мне не нужны, не сломав при этом функционал?<br />Мне НЕ нужно: перебирать всё множество, выводить окно, обрамлять найденное. Мне нужно искать только ОДНО совпадение и просто вывести в Tooltip итоговые координаты или высоту c шириной, поделив которые пополам, я нашел бы центр искомого с тем, чтобы кликнуть туда, например. Другими словами, я просто хочу замену стандартному ImageSearch но в новом костюмчике с большими карманами, чтобы не закапываться в python, а оставаться преданным autohotkey, в рамках привычного понимания, которого и без пайтона ничтожно мало)</p>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Sat, 16 Jan 2021 10:02:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144864#p144864</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144804#p144804</link>
			<description><![CDATA[<p>Спасибо Вам, дорогие товарищи большущее! С меня кружка пива в жаркий день!</p>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Fri, 15 Jan 2021 10:52:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144804#p144804</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144803#p144803</link>
			<description><![CDATA[<p>Лучше так:<br /><a href="https://stackoverflow.com/questions/14148758/how-to-capture-the-desktop-in-opencv-ie-turn-a-bitmap-into-a-mat/14167433#14167433">https://stackoverflow.com/questions/141 … 3#14167433</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 15 Jan 2021 10:44:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144803#p144803</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144802#p144802</link>
			<description><![CDATA[<div class="quotebox"><cite>pixel75 пишет:</cite><blockquote><p>как же, либо заставить снимать скриншот в .jpg</p></blockquote></div><p>Замените в первой строчке bmp на jpg.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 15 Jan 2021 10:40:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144802#p144802</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144800#p144800</link>
			<description><![CDATA[<p>Приведенный выше скрипт достоит аплодисментов автору, ибо оный выше всяких похвал обрабатывает .jpg-изображения! Но у меня стоит задача работать с .bmp-изображениями, потому как у меня программно делается скриншот экрана в области координат с помощью вот такого фокуса:<br /></p><div class="codebox"><pre><code>
	file = C:\Users\DonGustavo\Desktop\Open\baza.bmp
	screen(x,y,w,h, OutputFilePath, hwnd=&quot;&quot;) 
	{
		hwnd := (hwnd=&quot;&quot;) ? WinExist(&quot;A&quot;) : hwnd 										
		pBitmap := Gdip_BitmapFromScreen(0,raster)
		if (pBitmap &lt; 1)
		pToken := Gdip_StartUp(), pBitmap := Gdip_BitmapFromScreen(0,raster)
		pBitmap2 := Gdip_CreateBitmap(w, h)
		G2 := Gdip_GraphicsFromImage(pBitmap2), Gdip_SetSmoothingMode(G2, 4), Gdip_SetInterpolationMode(G2, 7)
		Gdip_DrawImage(G2, pBitmap, 0, 0, w, h, x, y, w, h)
		Gdip_SaveBitmapToFile(pBitmap2, OutputFilePath)
		Gdip_DeleteGraphics(G2), Gdip_DisposeImage(pBitmap), Gdip_DisposeImage(pBitmap2)
		if (pToken != &quot;&quot;)
		Gdip_ShutDown(pToken)
	}	

	screen(1059, 348, 220, 325, file, NoxPlayer) 
</code></pre></div><p>чтобы потом полученный скриншот скормить нейросети в качестве базового шаблона, чтобы на нём уже искать нужный мне элемент. Да, и кусок делающий bmp-скриншот и собственно код здешний по работе с OpenCV, заимствованы у не таких скудоумных, как я, и вероятно мсье знает толк в извращениях, если попытается конвертировать затем bmp в jpg, что безусловно отнимает время и потому&nbsp; оперативности не добавляет. Потому не лучше ли спросить людей уважаемых, как же, либо заставить снимать скриншот в .jpg, либо понять, можно ли скармливать .bmp, либо же совсем не скриншотить ничего, а как то искать в динамичном окне игры( например!) элемент с помощью локализованной Malcev OpenCV&nbsp; на подобие того, как находилось бы искомое на потоковом видео?&nbsp; Прошу не троллинга и&nbsp; попыток петросянить, но прошу совета.</p>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Fri, 15 Jan 2021 09:38:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144800#p144800</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=144738#p144738</link>
			<description><![CDATA[<p>Ребятушки, вы такие молодцы! Спасибо вам огромное за ваш&nbsp; труд! Предлагаю канонизировать Malcev! )</p>]]></description>
			<author><![CDATA[null@example.com (pixel75)]]></author>
			<pubDate>Thu, 14 Jan 2021 11:43:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=144738#p144738</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142427#p142427</link>
			<description><![CDATA[<p>Я не помогал, да и Blackholyman тоже.<br />Просто автор при создании класса пользовался мною перенесенными функциями с автоит.<br />Его скрипт определяет туловище с помощью haarcascade_fullbody.xml.<br />Подробнее читайте в справке по опенсиви.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 02 Oct 2020 21:46:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142427#p142427</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=142425#p142425</link>
			<description><![CDATA[<p><strong>Malcev</strong> Вроде вы помогали в работе этого скрипта <a href="https://github.com/manciuszz/AHK-OpenCV">https://github.com/manciuszz/AHK-OpenCV</a> вместе с &quot;Blackholyman&quot;, можете объяснить что он делает и как работает ?</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Fri, 02 Oct 2020 21:26:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=142425#p142425</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131598#p131598</link>
			<description><![CDATA[<p>Да, я спрашивал касается ли это только х64. Так понимаю это касается и х32.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Fri, 25 Jan 2019 11:16:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131598#p131598</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: OpenCV определение лица]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131597#p131597</link>
			<description><![CDATA[<p>Не совсем понял вопроса, но:<br /></p><div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Элементы структуры выравниваются по &quot;границе типа&quot;. Каждый элемент должен располагаться либо в начале структуры, либо по смещению от начала структуры, кратному его размеру. Если имеем структуру {char, short}, то второй элемент не может быть впритык к первому, т.к. имеет размер 2 байта и, значит, должен быть, как минимум, на смещении 2. Т.е. после char делается отступ в 1 байт, чтобы выравнять short.</p><p>Кроме того, размер структуры должен быть кратным самому большому её элементу. В структуре {short, char} к концу нужно добавить 1 байт, чтобы размер был не 3, а 4 байта, кратно short.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 25 Jan 2019 11:13:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131597#p131597</guid>
		</item>
	</channel>
</rss>
