2012-02-23 2 views
1

이 주제와 비슷한 주제가 많이 있었지만 누구도 알고있는 내용에 대해서는 정확한 답변을 제공하지 못했습니다. 누구든지 알고 있다면 나에게도 해주세요. 기음#.게임 화면에 빨간 사각형을 찾으십시오.

당신은 아마 (FPS) 게임을 알고 해상도가 1024x768 인 게임 화면에서 빨간색 사각형 (적)을 찾아 마우스를 움직여야합니다. 그래서 내 주요 문제는 빨간색 사각형을 찾는 것입니다.

내가 AForge 시도하고 메모리가 부족했습니다 : OK 그래서 여기에 지금까지 시도했습니다 무엇

ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0); 
TemplateMatch[] matchings = tm.ProcessImage(image1.Clone(r, 
     System.Drawing.Imaging.PixelFormat.Format24bppRgb), image2); 
내가 image1에를 만들 CopyfromScreen 사용했습니다

및 이미지 2 내가 가진 템플릿입니다 .

나는 LockBits를 시도 했으므로 비트 맵을위한 2 차원 코드 배열을 생성하고 빨간색의 코드를 찾고 직사각형 인 경우 ID를 시도해 볼 수 있지만 생각이 매우 복잡해 보이기 때문에 여기에 4 가지로 붙어있다. 며칠.

웹은 이것에 정보의 전체하지만 더 나는 어쨌든

는 PPL 여기에 나를 도와주세요 더 내가 :(혼란 얻을로 이동 : 처음에는이 이런 말을 할 필요가

+7

aimbot을 만드는 것은 매우 비 윤리적입니다. – RvdK

+0

AForge의 메모리가 부족하다고 저는 믿기가 힘듭니다. 너는 어떻게 사용하고 있니? – GETah

+0

@GETah 나는 2 가지 방법을 시도했다. 1. ExhaustiveTemplateMatching (0.485f)의 값을 변경함으로써이 링크에 http://www.aforgenet.com/framework/features/template_matching.html 나는 뭔가를 찾을 수있다. 그러나 내가 그것을 더 높게두면 아무것도 발견하지 못한다. 나는 그것을 내릴 때 모든 것을 너무 많이 발견한다. 중간을 찾을 수 없습니다. 2. 두 번째 접근 방식은 TemplateMatch [] matchings = tm.ProcessImage (image1.Clone (r, System.Drawing.Imaging.PixelFormat.Format24bppRgb), image2); 위의 코드를 두 번 FOR 검색에 넣으면 메모리가 부족해진다. –

답변

0

음을 빨간색 사각형이 빠르게 움직이는 경우, 당신은 다른 솔루션이 필요합니다, 그래서 아마 느려집니다 C++, CUDA 등은 ...

첫째 :.. 저장 빨간색 사각형의 이미지 가능의 영역을 정의 빨간색 직사각형의 위치

단계 :

  1. 캡처 게임 이미지 처리 시간을 줄이기 위해, .Copy 빨간색 사각형이 될 수 있음을 영역 만 (당신은 그래픽 CopyFromScreen을 사용할 수 있습니다).
  2. 빨간색 직사각형의 위치를 ​​찾으려면 EmguCV MatchTemplate을 사용하십시오.
  3. 마우스를 위치로 이동하십시오.
  4. 일부 스레드 수면과 반복 한 ...

마우스가 MouseKeyboardActivityMonitor

속도 향상 노트를 사용하여 제어 할 수있는 이미지 사용 EmguCV
을 처리하려면 : 당신이 시도 할 수 있도록 EmguCV, 지금은 약간의 CUDA 지원을 메소드의 CUDA 버전을 사용합니다.

 //You can check if a 8bpp image is enough for the comparison, 
     //since it will be much more faster. Otherwise, use 24bpp images. 
     //Bitmap pattern = "YOUR RED RECTANGLE IMAGE HERE!!" 
     Point location = Point.Empty; 
     //source is the screen image !! 
     Image<Bgr, Byte> srcBgr = new Image<Bgr, Byte>(source); 
     Image<Bgr, Byte> templateBgr = new Image<Bgr, Byte>(pattern); 

     Image<Gray, Byte> src; 
     Image<Gray, Byte> template; 
     src = srcBgr.Convert<Gray, Byte>(); 
     template = templateBgr.Convert<Gray, Byte>(); 

     Image<Gray, float> matchFloat; 
     matchFloat = src.MatchTemplate(template, TM_TYPE.CV_TM_CCOEFF_NORMED); 
     if (debug) 
     { 
      //matchFloat.Save(@"match.png"); 
      //Process.Start(@"D:\match.png"); 
     } 
     //Gets the max math value 
     double max; 
     double[] maxs, mins; 
     Point[] maxLocations, minLocations; 
     matchFloat.MinMax(out mins, out maxs, out minLocations, out maxLocations); 
     max = maxs[0]; 

     if (max > threshold) 
     { 
     location = maxLocations[0]; 
     //Point the mouse... Do your stuff 
관련 문제