오토핫키/오토핫키 명령어

오토핫키 - 색상구별(PixelGetColor)

끄적인다 2024. 6. 25. 19:00
반응형

오토핫키(AutoHotkey)는 윈도우 환경에서 자동화 스크립트를 작성할 수 있는 매우 유용한 도구입니다. 그 중에서도 PixelGetColor 함수는 화면의 특정 위치에 있는 픽셀의 색상을 가져오는 기능을 제공합니다. 이 함수는 이미지 인식, 색상 기반의 자동화 작업 등에 유용하게 활용될 수 있습니다. 이번 블로그 포스트에서는 PixelGetColor 함수의 기본 사용법과 다양한 활용 사례를 소개하겠습니다.

PixelGetColor 함수 기초

기본 사용법

PixelGetColor 함수는 특정 좌표의 색상을 가져와 변수에 저장합니다. 기본 구문은 다음과 같습니다.

PixelGetColor, OutputVar, X, Y [, Mode]
  • OutputVar: 색상 값을 저장할 변수
  • X, Y: 색상을 가져올 화면 좌표
  • Mode (선택 사항): 색상 형식 (RGB 또는 BGR)

예제

다음은 좌표 (100, 200)의 색상을 가져와 변수 color에 저장하는 예제입니다:

PixelGetColor, color, 100, 200
MsgBox, 색상 값: %color%

이 스크립트를 실행하면, 좌표 (100, 200)의 색상 값이 메시지 박스로 표시됩니다.

색상 비교 및 조건부 작업

특정 색상 확인

특정 좌표의 색상이 원하는 색상과 일치하는지 확인할 수 있습니다. 예를 들어, 좌표 (150, 250)의 색상이 흰색(0xFFFFFF)인지 확인하는 스크립트는 다음과 같습니다.

PixelGetColor, color, 150, 250
if (color = 0xFFFFFF)
{
    MsgBox, 색상이 흰색입니다.
}
else
{
    MsgBox, 색상이 흰색이 아닙니다.
}

색상 기반의 자동화 작업

화면의 특정 위치에 원하는 색상이 나타날 때까지 기다린 후, 특정 작업을 수행하는 자동화 스크립트를 작성할 수 있습니다. 다음은 좌표 (300, 400)에 파란색(0x0000FF)이 나타날 때까지 기다린 후 클릭하는 예제입니다.

SetTimer, CheckColor, 100

CheckColor:
PixelGetColor, color, 300, 400
if (color = 0x0000FF)
{
    Click, 300, 400
    SetTimer, CheckColor, Off ; 타이머 중지
    MsgBox, 파란색이 나타나 클릭했습니다.
}
return

고급 사용법

색상 허용 오차

화면 캡처 프로그램이나 디스플레이 설정에 따라 미세한 색상 차이가 발생할 수 있습니다. 이를 고려하여 허용 오차 범위를 설정할 수 있습니다. 다음은 허용 오차를 적용한 색상 비교 예제입니다.

PixelGetColor, color, 200, 300
TargetColor := 0xFF0000 ; 목표 색상 (빨간색)
Tolerance := 0x10 ; 허용 오차 (16진수)

if (Abs((color & 0xFF) - (TargetColor & 0xFF)) <= Tolerance
    and Abs(((color >> 8) & 0xFF) - ((TargetColor >> 8) & 0xFF)) <= Tolerance
    and Abs(((color >> 16) & 0xFF) - ((TargetColor >> 16) & 0xFF)) <= Tolerance)
{
    MsgBox, 색상이 허용 오차 범위 내에 있습니다.
}
else
{
    MsgBox, 색상이 허용 오차 범위 내에 있지 않습니다.
}

다중 색상 체크

여러 좌표의 색상을 확인하고, 모두 특정 조건을 만족하는지 검사할 수 있습니다. 다음은 여러 좌표의 색상을 확인하는 예제입니다.

Coords := [[100, 200], [150, 250], [200, 300]]
TargetColor := 0x00FF00 ; 목표 색상 (초록색)
MatchCount := 0

Loop, % Coords.MaxIndex()
{
    Coord := Coords[A_Index]
    PixelGetColor, color, %Coord.1%, %Coord.2%
    if (color = TargetColor)
        MatchCount++
}

if (MatchCount = Coords.MaxIndex())
{
    MsgBox, 모든 좌표의 색상이 일치합니다.
}
else
{
    MsgBox, 일부 좌표의 색상이 일치하지 않습니다.
}

 

오토핫키의 PixelGetColor 함수는 화면의 픽셀 색상을 확인하고, 이를 기반으로 다양한 자동화 작업을 수행할 수 있게 해줍니다. 이번 글에서는 PixelGetColor 함수의 기본 사용법부터 고급 활용 방법까지 다양한 예제를 통해 설명하였습니다. 이 함수를 활용하여 여러분의 자동화 스크립트를 더욱 강력하게 만들어 보세요!

반응형

'오토핫키 > 오토핫키 명령어' 카테고리의 다른 글

오토핫키 - Sleep  (0) 2024.06.28
오토핫키 - Send  (0) 2024.06.27
오토핫키를 - MsgBox  (0) 2024.06.26
오토핫키 - 마우스 제어  (0) 2024.06.24
들어가기 앞서  (0) 2024.06.18