매크로

조회 수 1215 추천 0 댓글 9

저는 이미지 서치보다 pixelGetColor를 많이 사용하는데요


요즘은 예쁜이미지, 투명이미지가 많아서 color값이 일정하지않고 일정 범위내에서 변하는 경우가 많이 있어요


pixelGetColor의 경우 색깔값이 RGB로 나눠서 나오기때문에 


오차범위 선정이 조금 까다로운 면이 있는데요


이러한 문제는 10진수를 사용하면 매우간단해집니다


검정색 = 0 흰색은 16777215값인데


이렇게되면 색값이 연속성이 생기게 되고


함수값을 특정 범위로 만들수가 있게 됩니다.


예를들어 붉은색 체력게이지바의 범위색이 일정하진 않더라도 1920~2200값을 유지하는거죠


이런 방법으로 리니지m의 체력바를 체크할수 있습니다


10진수로 변경하는 함수는 다음과 같습니다


;10진수 픽셀 체크


checkPixelDecimal(a,b){

pixelgetcolor, varPixel, a, b

SetFormat, IntegerFast, d

decimalCode := varPixel

decimalCode += 0

return decimalCode

}


이러면 RGB값이 아닌 정수값이 나와서 비교하기가 쉽습니다.


특정위치의 최대값과 최소값을 일일히 체크하기가 어렵고 범위를 넉넉하게 주기가 어려운데


이걸 따로 찾아내는 매크로도 따로 만들어 보았습니다


===========================================================


Gui, Add, ComboBox, x-8 y-67 w140 h106 , ComboBox

Gui, Add, Text, x10 y22 w30 h20 , X값

Gui, Add, Edit, x55 y19 w40 h20 vposX , 114

Gui, Add, Text, x140 y22 w30 h20 , Y값

Gui, Add, Edit, x185 y19 w40 h20 vposY, 92

Gui, Add, Text, x140 y52 w50 h20 , 최대값

Gui, Add, Edit, x185 y49 w70 h20 vcodeMax , 0

Gui, Add, Text, x10 y52 w50 h20 , 최소값

Gui, Add, Edit, x55 y49 w70 h20 vcodeMin, 0

Gui, Add, Button, x20 y120 w100 h30 , 체크

Gui, Add, Button, x125 y120 w100 h30 , 종료

gui, add, text, x30 y90 w100 h30 vshowCode, 0

; Generated using SmartGUI Creator 4.0

Gui, Show, x1090 y487 h170 w294, New GUI Window

Return


GuiClose:

ExitApp


stateNow := false


pixelMax := 0

pixelMin := 0


varPixel :=0


f3::

{

stateNow := false

}

return


button종료:

{

ExitApp

}

return


changecodeDecimal(a){

SetFormat, IntegerFast, d

decimalCode := a

decimalCode += 0

return decimalCode

}






button체크:

{

stateNow := true

gui submit, nohide

WinActivate, 프로그램타이틀

MouseMove, posX, posY

pixelgetcolor, varPixel, posX, posY

varPixel := changecodeDecimal(varPixel)

guiControl, ,codeMax, %varPixel%

guiControl, ,codeMin, %varPixel%

codeMinvar := varPixel

codeMaxvar := varPixel

Loop 

{

WinActivate, 프로그램타이틀 

MouseMove, posX, posY

pixelgetcolor, varPixel, posX, posY

varPixel := changecodeDecimal(varPixel)

if(varPixel > codeMaxvar)

{

guiControl, ,codeMax, %varPixel%

codeMaxvar := varPixel

}

if(varPixel < codeMinvar)

{

guiControl, ,codeMin, %varPixel%

codeMinvar := varPixel

}

guiControl, ,showCode, %varPixel%

if(stateNow = false){

break  

}

sleep, 200

}

}

return

===========================================================


허접합니다만

이걸이용하면 특정포인트의 pixelcolor값이 10진수로 어떻게 변화는지 체크할수 있습니다

그럼

      a := checkPixelDecimal(415,188)

if(a> 13500000 && a <13700000){

mouseClick, left, 392, 335,1,0

sleep, 200

}

이런식으로 정확한 값이 아니더라도 확인할수 있습니다


눈팅덧글로만 봤지만 할것엄따구님 댓글이 매우 도움이 많이되어서 이글을 빌어 감사의 인사를 전합니다


pixelgetcolor도 이렇게 사용하시면 의외로 많이 편하니 자주 이용해보세요^^ 감사합니다


  • 개발자의하루 2017.08.22 23:57

    오오 꽤 유용할거같습니다. 감사합니당

  • 할거엄따구 2017.08.23 00:45

    괜찮은 방법이네요~ 테스트해봐야겠어요 ㅎㅎ

  • 할거엄따구 2017.08.23 01:27

    R값이낮은 픽셀에서는 오감지가 좀 있는거 같네요.

  • 갈리토스 2017.08.23 12:23
    오오 할거엄따구님이 댓글달아주시다니 감사합니다! 분석도 해주시고 영광이에요 보통범위를 실측해서 정해서 큰 오차범위가 안생기던데 R값은 한번 고민해봐야겠네요 감사합니다^^ 모모비활성클릭 매우 잘쓰고있어요 감사해요~~^^
  • 할거엄따구 2017.08.23 12:46
    저도 초보인데 부끄럽게 왜그러세요ㅎㅎ;
    위에 pixel값을 decimal로 변환하신게 어차피 pixel값 FFFFFF 이렇게 된거를 10진수로 변환한거라, R값 1차이에 대한 오차 범위가 뒤에 G, B값의 오차범위를 넘어서서 그런거 같아요.
    R값이 1이라도 변하는 pixel이라면 G , B 값이 0~255까지 변하더라도 다 포함시켜버리니......
    G, B값에 대한 조건 안주고 R값만 조건 주고 판단하는거랑 별 차이가 없게 되는거죠..실제로 테스트해보니 리니지m 피통이 순간순간 요동치는 경우가 있더라구요.
    FF0000과 FEFFFF의 decimal값 차이는 1이기 때문에 전혀 다른 색을 검출할가능성이 생기는거죠...

    참고)
    R값 1변할때 차이 값 = 65536
    G값 1변할때 차이 값 = 256
    B값 1변할때 차이 값 = 1
  • jason 2017.11.19 07:08
    1x1 픽셀 크기의 bmp 파일로 이미지 서치를 하면서 오차값을 주면 어떨까요
  • 도우넛 2017.12.28 01:13

    좋은 정보 공유해주셔서 감사합니다~

  • hihi88 2021.01.23 23:12

    많이 도움이 됐습니다. 감사합니다.

  • 비듀맨 2022.07.21 11:32
    진짜 말도 안 되는 꿀정보네요 감사합니다!

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 녹스 비활성 PixelGetColor 어떻게 해야할까요? 16 pqpqpqq 2017.08.29 0/0
질문 Target Label does not exist 에러가 뜹니다 5 험블비 2017.08.27 0/0
질문 (초보) GDIP 이미지서치 사용방법 2 험블비 2017.08.31 0/0
질문 정말 초보적인 질문입니다만..마우스클릭의 위치를 조... 1 가느가다 2017.08.27 0/0
질문 모모 비활성 마우스클릭 도와주세요 자꾸 한곳만 클릭... 6 험블비 2018.10.17 0/0
질문 gdip 비활성 매크로에 if errorlevel 못쓰나요? 3 비구니 2018.05.11 0/0
자유 오토핫키로 세븐나이츠 비활성 매크로 공유된 자료나 ... 만렙찍자세븐 2017.08.24 0/0
질문 Window Info에 창 이름이 안뜨는건 어떻게 해야하나요? 3 ㅎㅈ2 2017.08.23 0/0
질문 Gdip 이미지 서칭시 특정 좌표에서부터 검색을 하고싶... 개발자의하루 2017.08.22 0/0
질문 길찾기 기능을 구현해볼려고 하는데요 3 곡산강씨 2017.08.31 0/0
정보 pixelGetColor 오차범위 만들기(10진수변환) 9 갈리토스 2022.07.21 0/0
질문 액셀에 사진이동후 사진속 숫자 및 글씨 엑셀로 이동하... 미쓰광 2017.08.22 0/0
질문 Pushbullet 윈도우 프로그램 비활성 클릭 질문드려요. 2 봉달이 2017.08.23 0/0
질문 어플이 간헐적으로 멈추는 변수를 어떻게 해결할까요? 3 프큼 2017.08.24 0/0
질문 오토핫키로 바람나라 하시는분 계신가요? 스피노프 2017.08.20 0/0
질문 우회하는건 게임사에서 막아놓은걸 뚫는 방법인가요? 5 woojin77 2017.08.24 0/0
질문 프메 매크로 만드려고 하는데.... 2 shhauwj 2017.09.13 0/0
질문 오토핫키에서 특정 좌표만 캡처할수 있을까요? 2 강문원 2017.08.21 0/0
질문 카톡 API라이브러리 질문입니다(KAKAO API LIBRARY) jhmun200 2017.08.19 0/0
질문 오토핫키 실행도중 다른 작업들을 무시하는 방법이 있나요 3 adde 2017.08.19 0/0
Board Pagination Prev 1 ... 798081828384858687 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글