본문 바로가기
마우스 매크로

이미지 매크로 프로그램 제작

by 엔지엠 2024. 1. 28.
반응형

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

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

#매크로 #메크로 #매크로프로그램 #스마트스토어 #슬롯 #조회수매크로 #인스타매크로 #인스타그램매크로 #유튜브매크로 #좋아요매크로 #마케팅매크로 #슬롯매크로 #오토핫키매크로 #파이썬매크로 #네이버카페매크로 #댓글매크로 #블로그매크로 #카카오톡매크로 #가리기매크로 #상품입력매크로 #쿠팡매크로 #쇼피매크로 #코인매크로 #주식매크로 #바이럴마케팅매크로 #추천구독매크로

 

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

 

안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로의 커스텀 모듈로 이미지 서치 또는 이미지 매치 액션을 어떻게 만드는지 알아보도록 하겠습니다. 이 내용을 학습하기전에 아래 내용들을 먼저 확인 해보셔야 합니다. 커스텀 모듈 개발 환경 구성과 간단한 예제로 마우스 클릭 만들기를 따라해보시고, 이 예제를 따라 해보세요^^

[ 커스텀 모듈 개발 환경 만들기 ]

[ 1부 - 광클릭 마우스 액션 만들기 ]

[ 2부 - 광클릭 마우스 액션 만들기 ]

[ 3부 - 광클릭 마우스 액션 만들기 ]

 

광클릭 마우스 액션 만들기뿐만 아니라 엔지엠 매크로에서 사용되는 모든 액션뿐만 아니라 사용자가 필요한 기능을 액션으로 만들어서 엔지엠 매크로 에디터에 추가할 수 있습니다. 광클릭 마우스 액션외에 다양한 예제들이 있는데요. 아래 글을 한번 참고해보세요.

[ 커스텀 모듈 개발 예제 ]

 

Visual Studio Community를 실행하고, 새로운 프로젝트를 추가하세요. CustomModuls 이름으로 솔루션을 만들었습니다. 그리고, 라이브러리 CustomImageSearch 프로젝트를 만들고 자동으로 생성되는 Class.cs는 삭제하세요. CustomImageSearchModel.cs 클래스를 새롭게 추가하세요.

 

 

이미지 서치에 사용할 이미지 2개를 만들었는데요. 아래 이미지는 source.png로 저장하세요.

 

 

source.png 이미지를 찾을 대상 이미지는 target.png입니다.

 

 

target.png 이미지에 source.png 이미지가 있는지 판단하는 간단한 액션입니다. 프로젝트에 참조 추가를 클릭하고, 커스텀 모듈 개발 라이브러리 3개를 추가하세요.

※ 프로젝트의 참조에서 우클릭하고, 컨텍스트 메뉴에서 참조 추가를 클릭하세요.

 

 

찾아보기를 클릭하시고, 관리자로부터 받은 커스텀 개발 프레임워크 라이브러리 3개를 선택하세요. 그리고, 확인을 클릭하세요.

 

 

프로젝트의 참조를 펼쳐보면 라이브러리 3개가 추가된걸 확인할 수 있습니다.

 

 

이제 코딩을 해야 하는데요. C# 언어에 대해 어느정도 알고 있으면 아래 내용들을 쉽게 이해할 수 있을겁니다. 하지만, 개발 언어를 한번도 접해보지 않았다면 이해가 안되는 부분들이 많을거예요. 그리고, 개발이라는게 단시간에 습득할 수 있는건 아니라서 꾸준히 학습하면서 예제들을 따라해보세요. 잘 모르는 부분들은 홈페이지의 [ 질문과 답변 게시판 ]에 질문하시면 알려드리도록 하겠습니다.

 

CustomImageSearchModel 클래스에 NGM.Models.Interface.BaseCustomConditionToolModel 추상 클래스를 상속 받습니다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CustomImageSearch
{
    [Serializable]
    public class CustomImageSearchModel : NGM.Models.Interface.BaseCustomConditionToolModel
    {

 

엔지엠 커스텀 모듈 프레임워크에서는 총 4개의 추상 클래스를 제공합니다.

  • NGM.Models.Interface.BaseCustomToolModel: 도구 상자 액션으로 반환 값이 없는 추상 클래스입니다.
  • NGM.Models.Interface.BaseCustomConditionToolModel: 도구 상자 액션으로 반환 값이 있는 조건 추상 클래스입니다.
  • NGM.Models.Interface.BaseCustomFunctionModel: 함수 상자 액션으로 반환 값이 없는 추상 클래스입니다.
  • NGM.Models.Interface.BaseCustomConditionFunctionModel: 함수 상자 액션으로 반환 값이 있는 추상 클래스입니다.

 

용도에 맞게 추상 클래스를 상속 받은 후 추상 속성과 메소드를 구현해야 합니다. 아래는 이미지 서치의 전체 코드입니다.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CustomImageSearch
{
    [Serializable]
    public class CustomImageSearchModel : NGM.Models.Interface.BaseCustomConditionToolModel
    {
        public override string DisplayCategory => "조건";

        public override string DisplayName => "이미지 서치";

        [Category("Data")]
        [DisplayName("판단 결과")]
        [DefaultValue(false)]
        [Browsable(true)]
        public bool Result { get; set; }

        public override bool? Execute()
        {
            var rect = NGM.Utility.ImageManager.ImageCondition.IsFind(
                Image.FromFile(@"C:\Users\ngmaster\Desktop\source.png"),
                Image.FromFile(@"C:\Users\ngmaster\Desktop\target.png")
                );

            Result = !rect.IsEmpty;
            return Result;
        }
    }
}

 

DisplayCategory 속성은 에디터의 카테고리 텍스트입니다. 동일한 카테고리를 사용하는 액션들은 하나의 카테고리 안에 추가됩니다.

public override string DisplayCategory => "조건";

 

엔지엠 매크로 에디터에서 조건과 같지만, 사용자 도구 상자에 표시됩니다.

 

 

DisplayName은 카테고리안에 추가할 액션의 이름입니다. 엔지엠 매크로 에디터의 이미지 서치, 이미지 매치와 같은 이름을 말합니다.

public override string DisplayName => "이미지 서치";

 

Execute 메소드는 실제로 동작해야 할 내용입니다. 이곳에 코딩하는데로 액션이 동작합니다.

public override bool? Execute()

 

엔지엠 매크로에서 제공해주는 편리하고 다양한 함수(Function)들을 이용해서 이미지 서치 또는 이미지 매치를 쉽게 만들 수 있습니다. 지금은 간단한 예제라서 사용자가 이미지를 선택하거나 캡쳐하는건 아닙니다. 미리 저장된 이미지 2개로 찾을 이미지가 포함되어 있는지 체크하는 방법입니다. 아래 코드에서 NGM.Utility.ImageManager.ImageCondition.IsFind 메소드를 사용하면 첫번째 이미지가 두번째 이미지 안에 있는지 찾을 수 있습니다.

※ 보기좋게 줄바꿈을 해서 코딩했지만, 실제로는 한줄로 쭉 작성해도 상관 없습니다.

            var rect = NGM.Utility.ImageManager.ImageCondition.IsFind(
                Image.FromFile(@"C:\Users\ngmaster\Desktop\source.png"),
                Image.FromFile(@"C:\Users\ngmaster\Desktop\target.png")
                );

 

IsFind 액션은 첫번째 이미지가 두번째 이미지에 포함되어 있는지 확인 후 찾은 이미지의 위치 값을 반환합니다. 이 값을 rect 변수에 저장합니다. 그럼, 이미지를 못찾으면 어떻게 될까요? rect는 빈 값을 반환 받는데요. 빈 값인지 확인하는 쉬운 방법은 IsEmpty를 사용하는겁니다. 반환 받은 rect 변수가 비어있는지 체크할 때 느낌표(!)를 앞에 붙여주면 참, 거짓을 반대로 처리합니다. 그래서 아래 코드는 이미지를 찾았다는 뜻이 됩니다.

            Result = !rect.IsEmpty;
            return Result;

 

테스트를 위해서 아래와 같이 컴파일하세요. 솔루션 탐색기에서 프로젝트를 우클릭하고, 빌드를 클릭하세요.

 

 

빌드가 완료되면 프로젝트에서 다시 우클릭한 후 파일 탐색기에서 폴더 열기를 클릭하세요.

 

 

bin > Debug 폴더로 이동한 후 모든 파일을 복사합니다.

 

 

내문서 > NGM6 > ToolExtension 폴더에 모두 붙여넣기 해주세요. 그리고, 엔지엠 매크로 에디터를 실행하세요. 그리고, 새 스크립트를 하나 추가해줍니다.

 

 

에디터의 사용자 도구 상자 탭(Tab) 안에 조건 카테고리가 보입니다. 조건 카테고리를 펼쳐보면 우리가 만든 이미지 서치 액션이 보입니다.

 

 

설정할 수 있는 속성이 없기 때문에 사용자가 뭔가 할 수 있는건 없습니다. 매크로를 실행 해볼까요? target.png 안에 source.png 이미지가 존재하기 때문에 결과는 True가 됩니다.

 

 

이미지 매치에는 몇가지 옵션들이 존재합니다. 예를 들어서 target 이미지에 source 이미지가 얼마나 일치하는지 확인할 수 있는데요. 아래와 같이 코드를 변경 해보세요.

        [Category("Data")]
        [DisplayName("매치율")]
        [DefaultValue(0)]
        [Browsable(true)]
        public double MatchRate { get; set; } = 0.0;

 

그리고, Execute 메소드에서 값을 가져와서 넣어주세요. matchRate가 추가되었고, 결과를 MatchRate 속성에 저장하도록 했습니다.

        public override bool? Execute()
        {
            var rect = NGM.Utility.ImageManager.ImageCondition.IsFind(
                Image.FromFile(@"C:\Users\ngmaster\Desktop\source.png"),
                Image.FromFile(@"C:\Users\ngmaster\Desktop\target.png"),
                out double matchRate
                );

            Result = !rect.IsEmpty;
            MatchRate = matchRate;
            return Result;
        }

 

다시 프로젝트를 빌드하고, 라이브러리를 내문서 > NGM6 > ToolExtension에 복사하세요. 그리고, 엔지엠 매크로 에디터에서 다시 실행 해보세요. 매치율도 표시됩니다.

 

 

간단하게 이미지 서치 또는 이미지 매치 액션을 커스텀 모듈로 만드는 방법에 대해 알아봤습니다. 이외에도 다양한 방식으로 이미지 조건을 만들 수 있는데요. 다음에는 실제 사용자로부터 이미지를 받거나 캡쳐해서 이미지를 비교하는 방법을 알아볼께요. 그리고, 찾은 이미지를 어떻게 클릭하는지도 같이 학습하도록 하겠습니다.

 

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

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

 

원본 글 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

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

반응형

댓글