매크로

조회 수 2207 추천 0 댓글 18

이미지에 있는 숫자 를 인식하기위해서 ..


그레이스케일 입혀서 그걸 다시 트랜스 해서 찾을려고해도 인식이 잘안되네요 ㅠㅠ


OCR 로도 해도... 그레이스케일 입히고 OCR 로도 해보고...


별짓 다한것같은데..


혹시 이미지를 힌색 과 검정 같이 정말 단순한 색으로 재구성하고싶은데.. 


어떤식으로 해야할까요


저기 보이는 LV.1 을 검색하고싶은데.. 뜻대로 잘되지않네요 ㅠㅠ


이미지를 그레이 입혀서 .. 투명 값을 좀 죽이고 서치하면 되겠지햇는데.. 잘안되네요 ㅠㅠ


이미지서치에 트랜스 입혀서 해도 잘안되고 ..


관련글이나 소스 아시는분 제발 부탁드립니다 ㅠㅠ 감사합니다 ;.


https://i.imgur.com/H4GzuOG.png https://i.imgur.com/H4GzuOG.png


  • profile
    블루아 2016.05.17 18:06

    문자 인식은 굉장이 힘들걸로 생각되네요.

    아마 거의 불가능하지 않을까 싶어요.


    오토핫키에서 사용가능한지는 모르겠지만 색을 재구성한다고 한다면 아마도 OpenCV로 가능할거에요.

  • 슉슉이 2016.05.17 18:17

    네, GDIP라이브러리에 관련 함수 모두 있습니다.


    겟픽셀로 픽셀 색상을 읽고 색범위를 2가지로 구분하고 거기에 해당되는 픽셀을 각각 흰색과 검은 색으로 만들고 비트맵을 그리면 됩니다. 제가 실제로 이렇게 썼습니다.


    함수들은 잘 기억이 안나지만 라이브러리 안을 쭉 살펴보세요.


    픽셀값 가져오는 것, 빈 비트맵을 만드는 것, 픽셀값을 갱신하는 함수가 있어요.

  • 슉슉이 2016.05.17 18:23

    예를 들어 원본의 0.0의 픽셀을 읽으니 R54,G61,B44이다. 대충 회색.

    나는 노란 계통의 색을 확실히 구분하고 싶다. 내가 읽으려고 하는 게임화면의 노란색은 Raa,Gcc,B55ek. 대충 여유를 둬서 R은 a0~af, g는 c0~cf사이에 들어오면 픽셀을 검은색으로 만들어 새로 비트맵을 그리자.

    따라서 0.0은 희색이되니 크리에이트 비트맵 -> 0.0에 흰색으로 넣음.


    이렇게 새로 만든 비트맵을 서치에 활용

  • 슉슉이 2016.05.17 18:25
    또 다른 방법이 있어요. 저는 매클 제작을 픽셀로 해서 위처럼 픽셀단위로 했지만 트렌스컬러 함수도 있어요. 안쓴지 오래되서 가물가물한데 라이브러리 안에 사용법이 다 있으니 보시면 딱 알겁니다ㅎ
  • 제발등업좀2 2016.05.17 19:09
    답변이.. 많이 달려네요 ㅎㅎ.. ㄱㅅ 합니다 쓕쓕이님 ㅎㅎ.. 지딥라이브러리는 쓰는것만 쓰고 안쓰는건 등하시하기때문애 ㅋㅋ 몰랏군요 함다시 봐야겠네요 ㅎㅎ
  • 가족오락관 2016.05.17 18:32
    숫자부분 오려낸뒤 흰색으로 숫자를 제외하고 흰색떡칠
    미세한 숫자그림자까지 흰색으로 그림판에서 만들어주고
    이미지서치 transwhite 주면 흰색 빼고 나머지 숫자만 인식 됩니다
  • 제발등업좀2 2016.05.17 19:19
    그건알고있는데 ㅎㅎ.. 저숫자 테두리부분이 그라데이션 이되어있고... 여튼 제대로 트랜스컬러가 먹질 않아서.. 그레이스케일 입히고 해볼려고한거에요 ㅎㅎ... 그래도 잘안되서.. ㅠㅠ 탈이긴하지만여 ㅋ
  • 슉슉이 2016.05.17 18:34

    제가 요즘 글자 인식하는 방법은 숫자에서 픽셀 몇개를 매칭하는 방법을 씁니다. 이미지 딸 필요도 없고 간단하죠. 픽셀 2개면 1부터 10까지 안겹치고 다 구별 가능합니다.


    if a픽셀매칭( 428, 147, 0xA7A9AA) = 0

    {

    로그("무기 30강 이상")

    }

    else

    {

    로그("무기 강화시도")

    a클릭(428,147)

    sleep, 2000

    로그("강화")

    a클릭(457, 296)

    sleep, 2000

    로그("자동선택")

    a클릭(707, 478)

    sleep, 2000

    스샷()

    if 무기설정재료 = 영웅이하

    {

    로그("일반템 확인")

    if a픽셀매칭( 210, 255, 0x64E6FD) = 1 ;일반템 확인

    a클릭(178, 258)

    로그("고급템 확인")

    if a픽셀매칭( 285, 258, 0x64E6FD) = 1 ;고급템 확인

    a클릭(260, 255)

    로그("희귀템 확인")

    if a픽셀매칭( 360, 257, 0x64E6FD) = 1 ;희귀템 확인

    a클릭(324, 259)

    로그("영웅템 확인")

    if a픽셀매칭( 435, 258, 0x64E6FD) = 1 ;영웅

    a클릭(406, 257)

    로그("전설템 확인")

    if a픽셀매칭( 510, 259, 0x64E6FD) = 0 ;전설

    a클릭(477, 258)

    로그("신화템 확인")

    if a픽셀매칭( 585, 256, 0x64E6FD) = 0 ;신화

    a클릭(555, 257)

    로그("기적템 확인")

    if a픽셀매칭( 660, 259, 0x64E6FD) = 0 ;기적

    a클릭(627, 261)

    }

    else if 무기설정재료 = 전설이하

    {

    로그("일반템 확인")

    if a픽셀매칭( 210, 255, 0x64E6FD) = 1 ;일반템 확인

    a클릭(178, 258)

    로그("고급템 확인")

    if a픽셀매칭( 285, 258, 0x64E6FD) = 1 ;고급템 확인

    a클릭(260, 255)

    로그("희귀템 확인")

    if a픽셀매칭( 360, 257, 0x64E6FD) = 1 ;희귀템 확인

    a클릭(324, 259)

    로그("영웅템 확인")

    if a픽셀매칭( 435, 258, 0x64E6FD) = 1 ;영웅

    a클릭(406, 257)

    로그("전설템 확인")

    if a픽셀매칭( 510, 259, 0x64E6FD) = 1 ;전설

    a클릭(477, 258)

    로그("신화템 확인")

    if a픽셀매칭( 585, 256, 0x64E6FD) = 0 ;신화

    a클릭(555, 257)

    로그("기적템 확인")

    if a픽셀매칭( 660, 259, 0x64E6FD) = 0 ;기적

    a클릭(627, 261)

    }

    로그("재료 선택")

    a클릭(463, 381)

    sleep, 2000

    로그("강화하기")

    a클릭(309, 463)

    판매딜레이 := 4000+딜레이

    sleep, %판매딜레이%

    a클릭(399, 449)

    스샷()

    if ( a픽셀매칭( 286, 119, 0x191E25) = 0 and a픽셀매칭( 517, 119, 0x191E25) = 0)

    {

    로그("강화알림창")

    a클릭(399, 449)

    }

    sleep, 1000

    a클릭(24, 59)

    sleep, 딜레이

    스샷()

    if a픽셀매칭( 78, 466, 0x4CD6EA) = 0

    {

    a클릭(24, 59)

    }

    판매딜레이 := 4000+딜레이

    sleep, %판매딜레이%

    a클릭(734, 106)

    sleep, 1000

    스샷()

    if a픽셀매칭( 732, 105, 0xA5C9E0) = 0

    {

    a클릭(734, 106)

    스샷()

    }

    }


    이건 실제로 제가 콘매클 장비 강화시 30렙 구별하고 30렙 안닌 템을 고르고 재료도 설정한 걸로 넣는 코드입니다. 픽셀로 하면 아주 간단하죠.

  • 슉슉이 2016.05.17 18:42
    a픽셀매칭(100, 100, 0xFFFFFF) ; Relative 100,100의 픽셀이 0xFFFFFF이면 0을 반환, 아니면 1을 반환.

    a픽셀매칭(apx, apy, 색상값)
    {
    pToken := Gdip_Startup() 
    스샷경로 = %매크로경로%\sc.png
    화면비트맵 := Gdip_CreateBitmapFromFile(스샷경로)
    Width := Gdip_GetImageWidth(화면비트맵), Height := Gdip_GetImageHeight(화면비트맵)
    ARGB := Gdip_GetPixel( 화면비트맵, apx, apy )

    colors := DEC2HEX(ARGB)
    Stringleft, c12, colors, 2
    StringRight, c34, colors, 2
    StringMid, c56, colors, 7, 2
    StringMid, c78, colors, 5, 2

    pcolor = %c12%%c34%%c56%%c78%
    ;MsgBox, % "화면비트맵" 화면비트맵 " ARGB" ARGB " ->pcolor" pcolor " 색상값" 색상값
    ;MsgBox, % "x"apx " y"apy "argb" ARGB " dx : " pcolor " op : " 색상값

    StringMid, B, 색상값, 3, 2
    StringMid, G, 색상값, 5, 2
    StringRight, R, 색상값, 2

    RM = 0x%R%
    GM = 0x%G%
    BM = 0x%B%

    b = 0x%c34%
    g = 0x%c56%
    r = 0x%c78%

    SetFormat, IntegerFast, dec
    RM += 0
    GM += 0
    BM += 0
    r += 0
    g += 0
    b += 0

    허용오차 := 2
    R1 := RM-허용오차
    G1 := GM-허용오차
    B1 := BM-허용오차

    R2 := RM+허용오차
    G2 := GM+허용오차
    B2 := BM+허용오차

    if (R1 < r and r < R2 and G1 < g and g < G2 and B1 < b and b < B2)
    {
    SetFormat, IntegerFast, dec
    Gdip_DisposeImage(Width) 
    Gdip_DisposeImage(Height)
    Gdip_DisposeImage(ARGB) 
    ;녹스 보더 보정
    apx := apx + 2
    apy := apy + 36

    로그 = %색상값% a매칭 (%apx%, %apy%)
    return 0
    }
    else
    {
    SetFormat, IntegerFast, dec
    Gdip_DisposeImage(Width) 
    Gdip_DisposeImage(Height)
    Gdip_DisposeImage(ARGB) 
    return 1
    }
    Gdip_DisposeImage(Width) 
    Gdip_DisposeImage(Height)
    Gdip_DisposeImage(ARGB) 
    return
    }

    DEC2HEX(DEC, RARGB="false") 
    {
        SetFormat, IntegerFast, hex
        HEX += DEC
        return HEX
    }
  • 가족오락관 2016.05.17 18:43
    눈팅하다 잘배우고 갑니다
    고정된 이미지는 trans로 잘 인식되는데
    스크롤에 의해서 움직이는 이미지는 미세하게 다른 이미지로 인식해서인가 잘 안되더라고요
    콘은 안해봤지만 픽셀 서치로도 하시는군요
  • 슉슉이 2016.05.17 18:55
    매클 만들기가 엄청 편해요. 코드만 보면 되게 귀찮아보이지만 이미지따고 할 필요가 없으니 코드 타이핑까지 자동화가 되요ㅎ
  • 가족오락관 2016.05.17 19:03
    이제 걸음마 단계인데 gdip에 슉슉님때문에 의욕이 솟구쳐
    오르는군요
    공부좀 해야겠습니다 ㅎㅎ
    좋은 하루되세요
  • 슉슉이 2016.05.17 19:04

    아~ 그리고 이미지 매칭을 픽셀 매칭처럼 이용하는 방법도 있습니다. 1*1이미지를 만들고 이걸로 그좌표만 서치하시면 됩니다.


    이미지1은 1x1픽셀 이미지 색은 797979

    이미지2는 1x1픽셀 이미지 색은 808080


    1의 윗부분의 좌표가 100x100, 색상은 797979, 아랫부분의 좌하표가 100x110, 색상은 808080 이라고 가정,


    이미지서치범위는 100,100,100,100으로하고 1이미지매칭시 10픽셀 아래에서 2이미지 매칭해서 되면 숫자는 1이다 이렇게요.

  • 제발등업좀2 2016.05.17 19:12
    개인적으로 픽셀 서치는 별로 선호하는타입이 아니라서 ㅎㅎ.. 여유값주고 만들어도... 공용시.. 안맞는부분이 생겨서 수정이 비교적쉬운 (타인기준) 이미지서치를 선호 하다보니 예를 먹네요 여튼 답변 진심 감사합니다.안되면 픽셀서치로 해야겠네요 ㅠㅠ
  • 들나귀 2016.05.18 12:30

    혹시 블택과 녹스같이 색상이 다른 두기기를 동시에 잡으실려고 그레이스케일로 만드신후 사용하시지요?

    기종이 하나라면 슉슉이님이 알려주신대로 픽셀서치가 무난할거라 생각드네요~ 둘도 보정값만 잘 잡으시면 상관없겠네요~

    언급하신 OCR이 제가 아는 AHK포럼의 그 OCR이 맞다면 잠깐 테스트를 해본 경험으로는 매우 힘드실 것 같습니다.

    그냥 숫자 이미지를 아주작게 잘 따셔서 트랜스 픽셀노가다를 잘 처리하신 후 정확도 수치를 잘 조정하시는 방법 밖에는요. 


  • 프리헌터스 2016.05.18 13:49

    모든 OCR은 배경과 글자가 색상이 명확해야 제대로 인식됩니다.

    세나처럼 숫자와 배경이 섞인경우 수동으로 배경을 날려주어야 하는데 싶지 않아요.

    더구나 지정영역에서의 OCR이 아닌, 넓은 영역에서 숫자위치 검색후 OCR 하는건 더욱 더 어렵습니다.

    아마 학위 논문 글이나 특허 관련 글에서 볼수 있을 듯..


    정확성은 떨어지지만 그나마 쉬운 방법은..

    1. 콘트라스트 적용으로 색상범위 감소

    2. 지정 글자 색 외 모두 블랙처리..

    3. 한글자 높이 기준 미달시 블랙처리

    4. OCR 진행



  • 제발등업좀2 2016.05.18 15:23
    답변 진심으로 감사합니다 ~ 음.. 그래서 이번에는 이미지를 빨강/하얀 색으로만..
    분리해서 이미지를 재구성(?) 하여찾을려고하고있습니다.. 글씨 가 하얀색 계통이므로 .. 그에 맞쳐 오차값좀 주고
    하면 더 좋지않을까해서요
  • 프리헌터스 2016.05.19 08:28
    아 이미지를 2배정도 키워서 하는게 더 효과적이었던거 같습니다.

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 postmessage 마우스클릭! 1 신령공주 2016.05.19 0/0
질문 에디터 UTF-8 설정 질문입니다 ^^; 4 아마테라스 2016.05.19 0/0
질문 a_index 내장함수 관련 질문!! 2 제발등업좀2 2016.05.19 0/0
자유 혹시 세나매크로 스크립트 구할 수 없을까요? 10 왜6자냐 2016.05.21 0/0
질문 Dropdownlist 에서 선택하지않으면 에러납니다. 4 우리강아지 2016.05.29 0/0
질문 GUI 지정후 dropdownlist 비교문 질문이요 혼자서는 2016.05.19 0/0
질문 오토핫키 에디터 질문좀요 4 아마테라스 2016.05.19 0/0
질문 질문 하나 더요 1 버철 2016.05.18 0/0
자유 핫키매크로 입문자용으로 설명잘되어있는곳 3 우후훅 2016.08.07 0/0
자유 초보자를 위한 블루스택 팅길시 자동실행법 1 셋쇼마루 2016.06.20 0/0
자유 이미지흰색 빨강으로 바꾸기 성공했네요 (슉슉이님감사) 제발등업좀2 2016.06.19 0/0
질문 Sleep 에 Edit창에 입력한 값을 적용하려고합니다. 5 우리강아지 2016.05.19 0/0
질문 adb 관련 소스좀 얻을수있을까요? 1 혼자서는 2016.05.18 0/0
질문 이미지를 흰색 검정으로만 재 구성할수있을가요? 18 제발등업좀2 2019.08.17 0/0
질문 이미지서치질문..ㅠㅠparse.. 2 혜띠뿌뿌 2016.05.16 0/0
질문 함수를 중복(동시)에 2~3개를 할 수 있을까요? 9 Rabbit 2016.05.17 0/0
질문 아주간단한 매크로하나 만들어볼려구 하는데요 4 토토가가 2016.06.10 0/0
질문 체크박스 질문합니다. 4 흑콘 2016.05.15 0/0
질문 오토핫키 초보 질문. 1 서승현 2016.05.14 0/0
질문 if 문 질문 올려봅니다, 4 수지가좋아 2016.05.14 0/0
Board Pagination Prev 1 ... 119120121122123124125126127 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글