snezzok
bulatenok_64rus
- Сообщения
- 12
- Репутация
- 0
Работая в охранном бизнесе, и в конец обленившись напрограмировал скрипт, который детектирует движение, определяет физиономию и открывает электронный замок двери. Дак вот, если с 1 и 3-им пунктом уже всё оттестировано и работает, то со вторым, ну прям бяда!
Если проверяемых лиц (фото) меньше 100, то скорость определения приемлемая, но в моём случае их более 600! И тут скорость детектирования достигает 0.4-1 мин, что не приемлемо.
Уважаемые гуру autoit-а помогите увеличить скорость.
Пы.Сы.
Желаемая скорость должна быть в районе 15-20 сек., а то аборигены ругаться будут.
Если проверяемых лиц (фото) меньше 100, то скорость определения приемлемая, но в моём случае их более 600! И тут скорость детектирования достигает 0.4-1 мин, что не приемлемо.
Уважаемые гуру autoit-а помогите увеличить скорость.
Пы.Сы.
Желаемая скорость должна быть в районе 15-20 сек., а то аборигены ругаться будут.
Код:
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
$form2=GUICreate("WcFd",642,262,-1,1)
$pic_Find=GUICtrlCreatePic('',1,1,320,240)
$pic_Result=GUICtrlCreatePic('',321,1,320,240)
$in_sum=GUICtrlCreateInput('',1,241,50,19)
$in_result=GUICtrlCreateInput('',53,241,50,19)
GUISetState(@SW_SHOW)
WcFd()
Do
Until GUIGetMsg() = -3
Func WcFd()
$St=50
;=========================== Matrix 1 =================================
$path_Find=FileOpenDialog('',@DesktopDir,'(*.jpg)',1)
GUICtrlSetImage($pic_Find,$path_Find)
_GDIPlus_Startup()
$hSource =_GDIPlus_ImageLoadFromFile($path_Find)
$W = _GDIPlus_ImageGetWidth ($hSource)
$H = _GDIPlus_ImageGetHeight ($hSource)
$hClone = _GDIPlus_BitmapCloneArea($hSource,0,0,$W,$H,$GDIP_PXF24RGB)
Dim $matrix1[$H/$St][$W/$St]
For $mat_Y= 0 To $H/$St-1
For $mat_X= 0 To $W/$St-1
$RGB = _GDIPlus_BitmapGetPixel($hClone,$mat_X*$St,$mat_Y*$St)
$hex='0x'&Hex($RGB,6)
$matrix1[$mat_Y][$mat_X]=$hex
Next
Next
;---------------------------------
_GDIPlus_ImageDispose ($hSource)
_GDIPlus_ImageDispose ($hClone)
_GDIPlus_Shutdown()
;======================================================================
$sPath=FileSelectFolder('Detect face',@DesktopDir,1)
$hSearch = FileFindFirstFile($sPath & '\*.jpg')
While 1
$r=0
$path_Result = FileFindNextFile($hSearch)
If $path_Result = '' Then ExitLoop
GUICtrlSetImage($pic_Result,$path_Result)
_GDIPlus_Startup()
$hSource =_GDIPlus_ImageLoadFromFile($path_Result)
$W = _GDIPlus_ImageGetWidth ($hSource)
$H = _GDIPlus_ImageGetHeight ($hSource)
$hClone = _GDIPlus_BitmapCloneArea($hSource,0,0,$W,$H,$GDIP_PXF24RGB)
For $mat_Y= 0 To $H/$St-1
For $mat_X= 0 To $W/$St-1
$RGB = _GDIPlus_BitmapGetPixel($hClone,$mat_X*$St,$mat_Y*$St)
$hex2='0x'&Hex($RGB,6)
$sum=$matrix1[$mat_Y][$mat_X]
GUICtrlSetData($in_sum,$sum)
If $sum=$hex2 Then $r+=1
Next
Next
;----------------------------
_GDIPlus_ImageDispose ($hSource)
_GDIPlus_ImageDispose ($hClone)
_GDIPlus_Shutdown()
;======================================================================
If $r>=5 Then
GUICtrlSetData($in_result,'Found')
Sleep(1000)
ExitLoop
EndIf
WEnd
EndFunc