본문 바로가기
매크로

누구나 쉽게 할 수 있는 C# 매크로 만들기. (이미지 인식, ImageSearch)

by 백수아저씨 2022. 1. 25.
반응형

업무용 RPA 매크로, 게임용 매크로, 주식, 코인, 자동매매, 자동사냥

엔지엠 무료 매크로 다운로드 http://ngmsoftware.com 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

 

안녕하세요. 엔지엠소프트웨어입니다. 이전 시간에 매크로 프로그래밍에서 마우스를 어떻게 클릭해야 하는지 알아봤는데요. 오늘 배워볼 내용은 이미지 서치와 마우스 클릭을 같이 해보는 예제입니다. 그렇기 때문에 마우스 클릭에 대한 내용도 알고 있어야 합니다. 아직 매크로 마우스 클릭을 안보셨다면 아래 글을 읽어보고, 내용을 학습한 후 이 글을 읽어보세요.

[ 마우스 매크로 만들기 ]

 

이미 만들어둔 MyPlayer 프로젝트를 불러옵니다. 그리고, 아래 동영상을 참고해서 이미지 서치 버튼을 하나 추가하세요. 버튼 이름은 이미지 서치로 했습니다.

 

 

이미지 서치에 대한 기능을 직접 구현하는건 상당히 많은양의 코드를 작성해야 합니다. [ 파이썬 매크로 만들기 ]와 동일하게 C#도 누군가가 이미 만들어놓은 멋진 모듈이 존재합니다. 90프로의 개발자는 남이 만들어놓은 코드 또는 모듈을 가져다가 사용합니다^^; 물론, 저도 그렇구요~ 아래와 같이 메뉴의 도구 > NuGet 패키지 관리자 > 솔루션용 NuGet 패키지 관리를 클릭하세요.

 

 

찾아보기 탭에서 imagefinder를 검색하세요. 이미지 서치 또는 이미지 파인더로 검색하면 많은 모듈이 나올겁니다. 괜찮은 모듈을 찾아서 사용하면 됩니다^^

 

 

ImageFinder를 선택하고, 설치를 진행하세요. 설치가 완료되면 프로젝트에 해당 모듈의 참조가 자동으로 추가되고, 사용할 수 있는 상태가 됩니다.

 

 

이미지를 찾으려면 어디에서 무엇을 찾을지 설정해야 합니다. "어디에서"는 컴퓨터의 화면입니다.  "무엇을"은 컴퓨터 화면에서 찾을 어떤 그림을 말합니다. 이 예제에서는 그림판에 오랜지색 점을 하나 추가한 후 이 점을 찾아서 클릭하는 예제를 만들겁니다. 따라서, 그림판을 실행하고 오랜지색 점을 하나 찍어줘야 합니다.

 

 

화면에 오랜지색 점이 있으니 인식할 이미지를 만들어야겠죠? 엔지엠 에디터를 실행하고 아래 동영상처럼 오랜지색 점을 캡쳐해서 이미지로 만듭니다. 무료 버전 엔지엠 에디터를 설치한 후 아래와 같이 해도되지만, 별도의 캡쳐 프로그램이 있다면 그 프로그램을 사용해서 오랜지색 점만 따서 별도로 저장하면 됩니다.

 

 

아래 그림처럼 바탕화면에 orange.png로 이미지를 저장 했습니다.

 

 

이제 이미지 서치 이벤트에 아래와 같이 코드를 작성해줍니다.

        private void button3_Click(object sender, EventArgs e)
        {
            // 현재 모니터 화면을 이미지로 설정합니다.
            ImageFinderNS.ImageFinder.SetSource(ImageFinderNS.ImageFinder.MakeScreenshot());

            // 바탕화면에 찾을 이미지를 선택한 후 유사도를 설정합니다.
            // 유사도는 float값으로 1.0f로 설정 했습니다.
            var finds = ImageFinderNS.ImageFinder.Find(Image.FromFile(@"C:\Users\ngmas\Desktop\orange.png"), 1.0f);

            // 찾은 이미지들의 목록만큼 반복하면서 클릭해줍니다.
            foreach (var find in finds)
            {
                // 유사도가 90프로 일치하면 클릭하도록 해줍니다.
                if (find.Similarity > 0.9f)
                {
                    Rectangle rect = find.Zone;

                    // 찾은 이미지의 중앙을 클릭하기 위해 좌표에 크기의 반을 더해줍니다.
                    Cursor.Position = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2);
                    mouse_event(LBUTTONDOWN, 0, 0, 0, 0);
                    mouse_event(LBUTTONUP, 0, 0, 0, 0);
                }
            }
        }

 

주석을 달아놓았기 때문에 ImageFinder 모듈을 사용하는데 크게 어려운점은 없을겁니다^^; 이제 프로그램을 실행한 후 오랜지색 점을 클릭하는지 볼까요?

 

 

여러분들도 그림판의 오랜지색 점을 잘 클릭했을거예요. 엔지엠 에디터와 같은 매크로 프로그램을 사용하면 쉽게 처리할 수 있지만, 직접 코딩으로 구현하려면 여러가지 신경써줘야 할것들이 많습니다. 이미지를 캡쳐하는 프로그램부터 좌표계를 계산하는 부분까지 그렇죠. 그리고, 게임에서 이용하는 경우에는 랜덤 값을 많이 쓰는데요. 이런 것들도 코딩으로 처리해줘야 합니다. 엔지엠 매크로 에디터는 아래와 같이 간단하게 처리할 수 있습니다.

 

 

찾은 이미지에서 랜덤하게 마우스를 클릭하려면 랜덤 최대값과 최소값을 설정하기만 하면 됩니다. 최소 -100에서 최대 100까지 설정해서 그런지 이미지에서 많이 벗어난 위치도 클릭하고 있네요. 보통은 이미지 크기에 따라서 이 값도 적절하게 설정해주는게 좋습니다. 아주 작은 이미지에서 큰 랜덤 값은 해당 이미지를 클릭하지 못할수도 있으니까요~

 

 

이렇게 C#으로 이미지 인식 매크로를 만들어봤습니다. 어느정도 로직이 들어가야 업무에 활용할 수 있겠지만, 현재로써는 이정도만 알아도 대부분의 업무용 매크로를 직접 만들어서 사용하는데 크게 어려운 부분은 없을겁니다. 이외에도 키보드 관련 내용도 준비중이니 많은 기대 부탁드리며, 오늘은 여기에서 마치도록 하겠습니다.

 

중고나라, 네이버 카페, 네이버 블로그, 오토핫키, 화면 인식, 문자 판독, 마우스 매크로, 키보드 매크로, 엑셀 매크로

무료 엔지엠 매크로 다운로드 http://ngmsoftware.com 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

 

반응형

댓글