본문 바로가기
오토 매크로

C# .NET 매크로 프로그램 만들기. (이미지 서치)

by ngmaster 2024. 3. 8.
반응형

유료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product_review 

 

엔지엠소프트웨어

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

www.ngmsoftware.com

#매크로 #메크로 #매크로프로그램 #오토매크로 #이미지매크로 #키보드연타 #비활성매크로 #수강신청매크로 #리니지매크로 #서버시간 #카카오톡봇 #카카오톡강퇴 #카카오톡가리기 #웹사이트매크로 #엔터매크로 #pc카톡매크로 #엑셀매크로 #엘디플레이어매크로 #녹스매크로 #푸쓰메크로 #이미지맥스 #카카오토 #오토핫키 #짜맥 #g허브 #ktx매크로 #무료매크로 #녹화매크로 #예약매크로 #지메일매크로 #조회수매크로

 

  • 엔지엠 커뮤니티 월 이용료: 4,500원, 1년 이용료: 55,000원 (전체 기능의 80프로)
  • 엔지엠 얼티밋 월 이용료: 6,500원, 1년 이용료: 77,000원 (전체 기능의 90프로)
  • 엔지엠 엔터프라이즈 월 이용료: 9,200원, 1년 이용료: 110,000원 (전체 기능 사용)

 

안녕하세요. 엔지엠소프트웨어입니다. 오늘은 이미지 서치에 대해 알아보도록 하겠습니다. 우선 테스트용도로 단순하게 만들건데요. 일반적으로 이미지 서치는 OpenCV를 이용해서 만듭니다. 엔지엠 매크로는 이미지 서치와 이미지 매치로 구분되어 있습니다. 이미지 서치는 픽셀 데이타를 분석해서 비교하는 방식이고, 이미지 매치는 OpenCV의 MatchTemplate을 사용합니다.

 

우선, 이미지 매치 액션을 하나 만들께요. Condition(조건) 폴더에 BaseModel, ImageModel, ImageMatchModel 3개를 추가 했습니다.

 

 

BaseModel은 조건의 추상 클래스입니다. 그래서, 조건 분기에 필요한 참과 거짓을 포함하면 될거 같습니다. 이미지 매치를 테스트하기 위한 용도라서 아직 속성을 만들진 않았습니다. 구조만 잡아놓고, 나중에 True, False에 대한 속성들을 추가할께요.

namespace Ai.Model.Action.Condition
{
    [Serializable]
    public abstract class BaseModel : ActionModel
    {
        public override void Excute()
        {
            
        }
    }
}

 

이미지 모델은 찾을 이미지를 선택할 수 있는 속성만 하나 만들었습니다.

namespace Ai.Model.Action.Condition
{
    [Serializable]
    public class ImageModel : BaseModel
    {
        [Category("Action")]
        [LocalizedDisplayName("ImageFile")]
        [LocalizedDescription("ImageFile")]
        [Browsable(true)]
        [DefaultValue(null)]
        [Editor(typeof(TypeEditor.OpenFileSelectorEditor), typeof(UITypeEditor))]
        public string? ImageFile { get; set; }

        public override void Excute()
        {
            base.Excute();
        }
    }
}

 

엔지엠 매크로에서 찾고 싶은 이미지는 Source로 명명하고, Source를 찾을 대상 이미지를 Target이라고 부릅니다. 다시 말해서 대상 이미지안에 소스 이미지가 있는지를 판단하는겁니다. 그리고, 대상 이미지에서 소스 이미지의 위치도 같이 알 수 있으면 좋겠네요.

 

마지막으로 이미지 매치 모델은 구현 클래스이기 때문에 OpenCV의 템플릿매칭을 코딩해야 합니다.

namespace Ai.Model.Action.Condition
{
    [Serializable]
    public class ImageMatchModel : ImageModel
    {
        public override void Excute()
        {
            base.Excute();

            if (!string.IsNullOrEmpty(ImageFile))
            {
                Image source = Image.FromFile(ImageFile);
                Image? target = Ai.Common.Screen.Capture();

                if (target != null)
                    MessageBox.Show(Ai.Common.ConditionImage.IsMatch(source, target).ToString());
            }
        }
    }
}

 

Ai.Common.Screen.Capture 메소드는 윈도우 화면을 캡쳐하는 Helper 클래스입니다. 코드는 아래와 같이 단순합니다. 윈도우 화면 크기만큼 복사한 후 넘겨주면 됩니다.

        public static Image? GetActiveImage()
        {
            using (Bitmap bitmap = new Bitmap((int)System.Windows.SystemParameters.FullPrimaryScreenWidth, (int)System.Windows.SystemParameters.FullPrimaryScreenHeight))
            {
                using (Graphics g = Graphics.FromImage(bitmap))
                {
                    try
                    {
                        g.CopyFromScreen(new Point(0, 0), new Point(0, 0), bitmap.Size);
                        return (Image)bitmap.Clone();
                    }
                    catch (Exception ex)
                    {
                        
                    }
                }
            }

            return null;
        }

 

닷넷에서 OpenCV를 래핑한 패키지가 크게 2종류가 있습니다. OpenCvSharp와 emgu.CV인데요. 둘다 활발하게 개발이 되고 있고 앞으로도 계속 서비스할거 같아요. 둘중에 뭐가 좋다라고 말할수는 없지만, 저는 OpenCvSharp으로 개발했기 때문에 코드 재사용을 위해 이번에도 OpenCvSharp을 사용했습니다. 비주얼 스튜디오 패키지 관리자에서 OpenCvSharp을 검색해서 프로젝트에 설치하세요.

 

 

래퍼 패키지만 있다고 해서 템플릿 매칭을 사용할 수 있는건 아닙니다. OpenCvSharp Github에서 네이티브 라이브러리를 다운로드 받아서 프로젝트에 추가해야 합니다.

 

 

위 이미지에서 릴리즈를 클릭하면 아래와 같이 네이티브 라이브러리를 다운로드 받을 수 있습니다.

 

 

압축을 풀고, OpenCvSharpExtern.dll을 프로젝트에 추가하세요. 그리고, 빌드시 자동 배포될 수 있도록 라이브러리 속성을 아래와 같이 설정해줍니다.

 

 

이제 이미지를 잘 찾는지 테스트 해볼까요? 그림판에 아래와 같이 찾을 이미지를 그려놓고 따로 저장을 해주세요.

 

 

찾을 이미지는 아래와 같이 캡쳐 해두었습니다.

 

 

이제 에디터에서 새 스크립트를 추가하고, 이미지 매치 액션에서 찾을 이미지를 선택하세요.

 

 

매크로를 실행하면 아래 동영상처럼 골뱅이 이미지가 있으면 True를 표시하고, 없으면 False를 표시합니다. 이렇게해서 윈도우 화면을 인식해서 이미지 서치하는 방법을 알아봤습니다. 여기에 찾은 이미지의 위치를 알아내서 마우스 클릭 동작까지 만들면 매크로 프로그램이 갖춰야할 대부분의 기능을 만든거라고 할 수 있습니다. 물론, 더 복잡한 업무를 처리하기 위해서는 많은 함수가 필요합니다. 차차 하나씩 추가해야겠네요^^

https://youtu.be/pwP41T44qwk

 

 

[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]

[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

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

www.ngmsoftware.com

#비활성매크로 #g102매크로 #철권매크로 #레이저마우스매크로 #ghub매크로 #녹화매크로 #키보드반복매크로 #로지텍마우스광클매크로 #플라스크매크로 #윈도우매크로 #비활성g매크로 #오토매크로 #자동사냥 #주식매크로 #오토핫키키보드 #오토핫키마우스 #오토핫키이미지 #지존오토 #기계식매크로 #하드웨어매크로 #무한반복매크로 #대량이메일발송매크로 #엑셀VBA매크로 #주식모니터링매크로 #이미지맥스 #심플핫키 #오토클리커 #UiPath #Brity #스푸퍼 #DKOM #모바일게임매크로 #다클라매크로 #다계정매크로 #인스타그램매크로 #짜맥매크로 #챗굴매크로

반응형

댓글