[오토핫키] 동일한 이미지 여러개를 동시에 이미지서치

2024. 10. 1. 08:19오토핫키 중급

 

 

#Persistent
GuiHandles := []
ImageCoordinates := []
return

A:: ; A를 핫키로 지정
SetTimer, ImageSearchLoop, -1
return

ImageSearchLoop:
    CoordMode, Pixel, Screen
    CoordMode, Mouse, Screen

    ; 이전에 표시된 모든 시각적 장치 제거
    for index, handle in GuiHandles
    {
        Gui, %handle%:Destroy
    }
    GuiHandles := []
    ImageCoordinates := []

    imagePath := "하트.png"

    searchX1 := 0
    searchY1 := 0
    searchX2 := 1920
    searchY2 := 1080

    Loop
    {
        CoordMode, Pixel, Screen
        CoordMode, Mouse, Screen
        ImageSearch, foundX, foundY, searchX1, searchY1, searchX2, searchY2, *10 %imagePath%
        if (ErrorLevel != 0)
            break ; 더 이상 이미지가 발견되지 않으면 루프 종료

        ; 이미지가 발견되면 시각적 표시 및 좌표 저장
        ShowVisualIndicator(foundX, foundY)
        ImageCoordinates.Push({x: foundX, y: foundY})
    }

    ; 결과 표시
    totalImages := ImageCoordinates.Length()
    resultMessage := "총 찾은 이미지 개수: " . totalImages . "`n`n"
    
    for index, coord in ImageCoordinates
    {
        resultMessage .= "이미지 " . index . " 좌표: X=" . coord.x . ", Y=" . coord.y . "`n"
    }

    MsgBox, %resultMessage%

return

ShowVisualIndicator(x, y)
{
    Gui, New, +AlwaysOnTop +ToolWindow -Caption, MyGui
    Gui, Color, Blue
    Gui, Show, x%x% y%y% w15 h15
    GuiHandles.Push(A_Gui) ; A_Gui를 사용하여 현재 GUI ID를 저장
}

Esc::ExitApp

 

멀티이미지서치 예시.zip
0.02MB

 

오토핫키를 이용하여

 

동일한 이미지 여러개를 한번에 찾을 수 있는 스크립트이다.

 

이미 찾아진 이미지 위치에 작은 Gui를 만들어 시각적 효과를 주며 가려준다.

 

그럼 다음 이미지 서치에서 Gui가 만들어진 위치의 이미지는 서치하지 않게된다.

 

이런식으로 동일한 이미지를 한번에 찾을 수 있다.

 

 

이미 찾아진 이미지의 좌표를 저장하고,

다음 이미지 서치때는 저장된 좌표를 제외하고 이미지 서치를 수행하게하면

Gui를 만들지 않고도 동시에 동일한 이미지를 서치할 수 있다. 

 

더 좋은 아이디어가 있다면 댓글로 알려주세요.

 

 

 

 

프로그램 개발 의뢰 및 문의

검은망치 카카오톡오픈프로필 : https://open.kakao.com/o/sDUaoCNg

 

[오토핫키] 검은망치님의 오픈프로필

오토핫키 개발러

open.kakao.com