NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    스크립트 기초부터 하나씩! - 이미지를 찾아서 클릭하기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 게임 또는 업무를 자동화할 때 가장 기본이 되는 기능이 뭘까요? 마우스와 키보드~ 그리고, 오늘 알아볼 이미지 서치입니다. 단순히 마우스와 키보드를 조합해서 순차적으로 업무를 처리할 수 있지만, 이는 완벽하게 업무 로직을 구현하는데 한계가 발생합니다. 복잡한 자동화를 구현해야 한다면 이미지 서치는 필수 기능이죠^^; 엔지엠 에디터는 이미지 체크, 이미지 서치와 이미지 매치가 있습니다. 이외에도 멀티 서치나 전체 서치등등 다양한 기능들이 포함되어 있는데요. 이런것들은 다음에 자세히 알아보도록 하고 오늘은 이미지 서치를 테스트해봅시다. 에디터를 실행하고 스크립트를 추가(Ctrl+N)하세요. 도구 상자의 조건에 있는 "이미지 서치" 액션도 추가하세요.

    [ 이미지 서치 메뉴얼 보기 ]

    COL6jPZ.png

     

     

    아래 동영상을 참고해서 찾을 이미지(휴지통)를 하나 캡쳐 해줍니다. 순차적으로 설명하면 속성창의 캡쳐를 클릭한 후 마우스 드래그로 이미지를 선택합니다. 그리고, F1을 누르면 드래그로 선택한 이미지를 저장할 수 있습니다. 캡쳐한 이미지는 엔지엠 기본 이미지 폴더에 저장됩니다. 물론, 다른 위치에 저장해도 됩니다.

    1kazrWg.gif

     

     

    실행(Ctrl+Alt+F8)해보면 "휴지통"을 찾았다고 메시지를 표시해줍니다. 메시지는 하단 아웃풋 창에 표시됩니다.

    UUyiNV6.gif

     

     

    휴지통을 그림판이나 메모장으로 가려놓고 다시 실행 해보세요. 이번에는 이미지를 못찾았다고 메시지가 표시됩니다.

    9XWf1Ow.gif

     

     

    사실 중요한 부분은 이런 단순한 이미지보다 반투명 이미지를 찾아내는 것입니다. 요즘 3D 게임들은 대부분 반투명 이미지로 아이콘들이 만들어져 있습니다. 배경에 따라서 이미지의 색상이 바뀌는거죠. 이런 이미지들은 캡쳐 당시의 아이콘과 비교하면 전부 다르다고 결과를 표시합니다. 당연한 결과겠지만요^^; 아무튼, 이런 경우라도 이미지를 판단해서 특징을 비교해서 찾을 수 있어야 합니다.

    RQecKcP.gif

     

     

    이미지 서치에는 색상이 좀 다르더라도 같은 이미지로 판단할 수 있는 옵션이 있습니다. 아래 그림에서 "공차"가 그 역할을 하는데요. 기본값인 0은 이미지가 완전 일치해야 한다는 뜻입니다. 이미지 색상이 다르더라도 같은 이미지로 판단하려면 이 값을 증가시키면 됩니다. 최대 255까지 입력할 수 있습니다. 컴퓨터의 모든 이미지는 ARGB로 나타냅니다. Alpha는 투명도를 나타내고 나머지 RGB(Red, Green, Blue)는 빛의 3원색으로 모두 합치면 흰색이 됩니다. 각각 0~255까지의 범위를 가집니다. 그래서, 흰색을 숫자로 표현하면 255 255 255 255가 됩니다. 검은색은 255 0 0 0입니다.

    IVGWUTg.png

     

     

    이미지를 찾으면 해당 이미지가 어디에 있는지와 마우스가 클릭하게 될 좌표를 알려줍니다. 아직 변수에 대해 학습하지 않아서 자세하게 설명할수는 없으나, 일반적으로는 이 정보를 변수에 저장한 후 마우스 클릭에서 사용해야 합니다. 하지만, 간단하게 이미지를 찾아서 클릭하는 로직을 복잡하게 만듭니다. 그래서 조건 액션들에는 기본적으로 마우스 동작이 확장 속성으로 포함되어 있습니다.

    Sriw1N6.png

     

     

    아래 그림과 같이 "마우스 동작"을 "LeftClick"으로 변경하세요.

    vbFS21N.png

     

     

    다시 실행 해볼까요? 마우스가 휴지통을 클릭하는걸 확인할 수 있습니다.

    Y4K3LjY.gif

     

     

    마우스가 휴지통 가운데 지점을 클릭하는걸 확인하셨나요? 만약, 랜덤하게 클릭하고 싶은 경우 어떻게 처리해야 할까요? 아래 옵션을 변경하고 다시 실행 해보세요. 이전 글인 [ 마우스 사용 방법 ]을 읽어보셨다면 이 내용을 쉽게 이해할 수 있을겁니다. 마우스 동작 방식은 동일하거든요^^

    ZZK6FP5.png

     

     

    단축키로 연속해서 실행 해보면 랜덤하게 클릭하는걸 알 수 있습니다. 아래 영상에는 마우스 클릭이 하나 추가되어 있습니다. 우선, 이 내용을 이해하려면 컴퓨터가 어떻게 이미지를 분석해서 같은지 다른지 판단하는 방법을 알고 있어야 합니다. 하지만, 우리가 이런 전문적인 내용까지 알 필요는 없습니다^^; 아무튼 이미지 서치가 휴지통을 찾으면 휴지통을 클릭할겁니다. 자세히 보면 클릭된 휴지통은 색상이 하이라이트되면서 처음에 캡쳐한 이미지와 다른걸 알 수 있죠. 그래서, 다시 찾기 위해 휴지통을 선택하기 전 상태로 만들 필요가 있습니다. 그래서, 두번째에 있는 마우스 클릭 액션으로 다른곳을 클릭하게 만들어준겁니다.

    097TsZf.gif

     

     

    이해하는데 어려울수도 있는데요. 실제 나는 선택되지 않은 휴지통을 찾기로 했다는걸 잊지 마세요. 한번 클릭되면 휴지통이 변한다는것도 확인해야 합니다. 사람이 볼때는 똑같은 휴지통이지만, 좀 더 관심있게 사물을 관찰한다면 선택 전 휴지통과 선택 후 휴지통이라는걸 인지할 수 있습니다. 사람은 무의식적으로 선택 여부와 상관없이 휴지통으로 인지할 수 있습니다. 하지만, 컴퓨터는 사람처럼 인지할 수 없어요. 그렇기에 선택 전 휴지통과 선택 후 휴지통이 다르다고 처리해줘야 합니다.

     

    만약 휴지통 이미지를 작게 만들었다면 동작이 어땠을까요? 선택 여부와 관계없이 정상 동작할수도 있습니다. 선택된 휴지통과 선택되지 않은 휴지통은 아래와 같은데요. 유심히 보면 휴지통은 변화가 없지만 배경이 약간 다른걸 알 수 있죠? 그래서 배경을 제외하고, 휴지통 안쪽 부분만 캡쳐하면 선택 여부와 관계없이 동작됩니다.

    TsJLidN.png zXYFF3U.png

     

     

    휴지통 이미지를 아래 그림과 같이 다시 캡쳐 했습니다. 배경 없이 휴지통 내부만 캡쳐했습니다.

    43CAR8L.png

     

     

    단축키로 연속해서 실행(Ctrl+Alt+F8) 해보면 휴지통이 선택된 상태에서도 계속 찾아지는걸 알 수 잇습니다. 이런 부분들이 업무를 자동화하는데 중요한 노하우입니다. 사람의 직관성은 컴퓨터도 흉내내기 어려운 엄청난 메커니즘입니다. 이걸 컴퓨터 알고리즘으로 구현하려면 인공 신경망 알고리즘을 사용해야 하는데요. 이게 딥러닝으로 이미지를 분류하고 추적하는 기능입니다. 엔지엠에서는 텐서플로우와 욜로 딥러닝을 지원하고 있습니다. 아무튼, 이미지 서치나 이미지 매치는 컴퓨터가 쉽게 이해할 수 있도록 7살 어린이 대하듯 잘 알려줘야 합니다^^;

    MkyWs80.gif

     

     

    이외에도 다양한 방식으로 원하는 결과를 만들어 낼 수 있습니다. 노하우는 스크립트를 많이 만들어보고, 문제 해결에 대한 답을 찾을때마다 한단계씩 성장하게 됩니다. 스크립트 제작하면서 노하우를 홈페이지에 공유해주면 다른 분들도 빠르게 성장할 수 있을겁니다. 하지만~ 블로그를 해본 분들은 아실겁니다. 글 하나를 적기 위해 많은 노력이 들어간다는것을요^^; 그러니~ 노하우나 팁을 공유해주는 글에는 응원의 댓글이라도 한번 달아주시면 좋겠습니다. 그리 어렵지 않은 일이니까요~

     

    이번에는 마우스 동작을 "LeftDoubleClick"으로 변경하고 다시 실행 해보세요. 휴지통이 열립니다.

    yuIUW1J.gif

     

     

    이미지를 문자로 처리할수도 있는데요. 이 기능은 문자열 비교 액션을 학습하면서 같이 알아보도록 하겠습니다. 이미지 서치에서 인식한 이미지를 문자로 설정하고 문자열 비교에서 해당 문자라면 조건에 따라 처리가 가능합니다. 여러가지 상황에서 응용할 수 있는데요. 여러가지 액션들을 조합해서 사용해야 합니다. 아직은 어떻게 응용해야 할지 감지 오지 않을겁니다. 메뉴얼을 보면서 직접 스크립트를 작성하면 금방 실력이 느는데요. 이해력과 응용력은 사람마다 차이가 있긴하지만, 일반적으로 2주 정도면 원하는 기능을 만들 수 있습니다. 다음에는 이미지 서치와 비슷하지만 색깔보다 이미지 모양으로 찾는 이미지 매치에 대해 알아보겠습니다. 그리고, 이 둘이 이미지를 인식하는 방식에 대한 차이점도 같이 알아볼께요.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천4 비추천0

    댓글목록

    등록된 댓글이 없습니다.