본문 바로가기
게임

이미지 추적 매크로

by 업무자동화 2023. 1. 13.
반응형

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

http://ngmsoftware.com/bbs/board.php?bo_table=product1&wr_id=32 

 

엔지엠소프트웨어

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

www.ngmsoftware.com

#매크로 #매크로프로그램 #메크로 #g매크로 #마우스매크로 #키보드매크로 #엑셀매크로 #키매크로 #수강신청매크로 #로지텍마우스매크로 #매크로키보드 #파이썬매크로 #매크로뜻 #매크로마우스 #로지텍매크로 #ld플레이어매크로 #오토마우스매크로 #키보드마우스매크로 #오토핫키매크로 #이미지매크로 #이미지인식매크로 #하드웨어매크로 #화면인식매크로 #선착순매크로 #이미지서치매크로 #한글매크로 #심플핫키 #simplehotkey #지존매크로

 

안녕하세요. 엔지엠소프트웨어입니다. 오늘 만들어볼 내용은 사용자가 선택한 특정 캐릭터 또는 오브젝트를 따라가는 프로그램을 만들어 볼겁니다. 코딩량이 그렇게 많지는 않아서 누구나 쉽게 만들 수 있을거예요. 대략 40줄밖에 안되거든요~ 간단하게 테스트하기 위해 Visual Studio를 실행하고 새로운 프로젝트를 추가 해줍니다. 저는 콘솔 프로젝트로 만들었어요. 이름 짖기가 귀찮아서 그냥 기본 이름(ConsoleApp1)으로 만들었습니다.

 

 

OpenCV를 이용할겁니다. 아래 그림과같이 프로젝트의 NuGet Package를 통해 아래 2개 패키지를 설치 해주세요.

 

 

윈도우 전체 화면에서 오브젝트를 검출해도 되지만~ 효율을 위해 실제 동영상 또는 게임창 부분만 인식하도록 해야 합니다. 영역을 설정하기 위해 [ 엔지엠 에디터 무료 ] 버전을 실행하고, 아래 동영상과 같이 인식할 범위를 선택 해줍니다. 엔지엠 에디터가 없으면 [ 여기 ]에서 다운로드 할 수 있습니다.

 

 

위에서 "찾기 영역"을 복사한 후 아래와 같이 코드를 추가 해줍니다.

Rectangle captureArea = new Rectangle(120, 204, 1233, 641);

 

OpenCV의 오브젝트 트레커를 생성 해주세요. Tracker는 아래와 같이 8종류를 제공 해줍니다.

  • Boosting: 구버전 추적기로 성능이 떨어집니다. 현재는 사용되지 않습니다.
  • MIL: Boosting에 비해 정확도가 높지만, 감지 여부에 대한 처리가 누락됩니다.
  • KCF: Boosting, MIL보다 속도가 빠릅니다. 하지만, 오브젝트가 겹치거나 가리는 경우 추적을 놓치게됩니다.
  • CSRT: KCF보다 정확도가 높고, 오브젝트가 가려져 있어도 잘 추적합니다. 속도가 느립니다.
  • MedianFlow: 이미지가 빠르게 움직이는 경우 오브젝트 감지를 못하는 문제가 있습니다.
  • TLD: CSRT는 검출 대상을 놓치면 다시 찾지 못하는 문제가 있습니다. TLD는 다시 찾아서 추적하지만, 속도가 느립니다.
  • MOSSE: 정확도는 떨어지지만 속도가 매우 빠릅니다.
  • GOTURN: 딥러닝 기반으로 모델이 필요합니다.
List<OpenCvSharp.Tracking.TrackerCSRT> trackers = new List<OpenCvSharp.Tracking.TrackerCSRT>();

 

화면에서 검출할 이미지를 사용자가 선택할 수 있도록, 첫번째 캡쳐 화면을 표시 해줍니다.

Image image = NGM.Utility.ScreenCaptureManager.ScreenShot.GetActiveImage(captureArea);

Mat img = OpenCvSharp.Extensions.BitmapConverter.ToMat((Bitmap)image);
Cv2.CvtColor(img, img, ColorConversionCodes.BGRA2BGR);

Cv2.NamedWindow("Select Window");
Cv2.ImShow("Select Window", img);

Rect[] rects = Cv2.SelectROIs("Select Window", img, true, false);
Cv2.DestroyWindow("Select Window");

 

OpenCV는 이미지 분석에 GrayScale을 사용하는게 좋습니다. 하지만, 이런 필터들로 인해 성능이 저하되는것 좋지 않죠. 그래서, 특별히 필터를 사용하지는 않았습니다. 다만, 아래 코드와 같이 4Channel을 3Channel로 변경해줬습니다. Alpha값이 존재하지 않기 때문에 스캔라인의 스트라이더까지 계산할 필요는 없습니다.

Cv2.CvtColor(img, img, ColorConversionCodes.BGRA2BGR);

 

검출할 이미지를 선택하기 위해 Cv2.SelectROIs를 사용합니다. 단일 오브젝트만 검출한다면 Cv2.SelectROI를 사용해도 됩니다.

Rect[] rects = Cv2.SelectROIs("Select Window", img, true, false);

 

프로그램을 실행(F5)하면 검출할 이미지를 선택할 수 있는 창이 표시됩니다. 여러분들은 깨끗한 동영상과 이미지가 보일겁니다. 동영상 촬영 프로그램과 OpenCV, 캡쳐 프로그램등등... 글을 작성하기 위한 그래픽 프로그램이 많다보니 이미지가 많이 깨지네요. 아무튼, 레드벨벳의 아이린 얼굴을 드래그로 선택한 후 스페이스바를 눌러서 선택 완료하세요. 그리고, ESC를 누르면 작업이 완료됩니다.

 

 

위에서 언급했던 트레커를 초기화 해줍니다. 이번 테스트에서는 CSRT를 사용했습니다.

foreach (var rect in rects)
{
    var tracker = OpenCvSharp.Tracking.TrackerCSRT.Create();
    tracker.Init(img, rect);
    trackers.Add(tracker);
}

 

마지막으로 오브젝트를 추적하기 위해 반복해서 화면을 캡쳐해서 트레커로 전달해줍니다. 이렇게만 하면 실제로 어떻게 처리가 되는지 시각적으로 알 수 없기 때문에 검출된 오브젝트의 위치 값을 트레커에 업데이트 해줍니다. 그리고, Cv2.Rectangle을 이용해서 사각형 영역을 그려주세요.

while (true)
{
    image = NGM.Utility.ScreenCaptureManager.ScreenShot.GetActiveImage(captureArea);
    img = OpenCvSharp.Extensions.BitmapConverter.ToMat((Bitmap)image);
    Cv2.CvtColor(img, img, ColorConversionCodes.BGRA2BGR);

    foreach (var tracker in trackers)
    {
        Rect box = new Rect();
        bool success = tracker.Update(img, ref box);
        Cv2.Rectangle(img, box, Scalar.White, 3);
    }

    Cv2.ImShow("img", img);
    if (Cv2.WaitKey(33) == 'q')
        break;
}

 

프로그램을 실행하고, 레드벨벳의 아이린 얼굴을 선택 해줍니다. 그리고, ESC를 눌러서 작업을 완료하세요. 그러면 아래 동영상처럼 추적할 수 있습니다.

 

 

재미로 하나 더 테스트 해볼까요? 아래는 리니지W라는 모바일 게임인데요. 저는 게임을 안해서 유튜브에 있는 사냥 동영상으로 테스트 했습니다. 케릭터도 잘 따라다니죠?

 

 

생각보다 실시간으로 이미지 트레킹이 잘 되더라구요. 단 40줄로 이런 프로그램을 만들 수 있다는거에 놀랐습니다. 뭐 별로 어렵지도 않고요. 하지만, 이 기본 코드를 이용해서 뭔가 만들려고 한다면~ 괜찮은 품질의 소프트웨어를 얻을수는 없을겁니다. 정확도에서 월등히 뛰어난 YOLO 딥러닝을 많이 쓰기 때문입니다. 아무튼 재미로 한번 해보는건 괜찮는거 같네요.

 

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

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

 

원본 글 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

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

반응형

댓글