2012-02-23 7 views
1

を赤い四角形を探しますC#。私はそこに、これと同じ多くの話題となってそれらのどれもが、誰もが知っている場合、私はそうしてください探していますし、また、私はそれをやっているものに正確な答えを持っていたんだ知っているゲーム画面に

あなたのすべては、おそらく(FPS)ゲームを知っていると解像度でゲーム画面上には、1024×768 iが(敵である)赤い四角形を見つけ、そこにマウスを移動する必要があると言います。 私の主な問題は、赤い矩形を見つけることです。 OKので、ここで私がこれまで試したものです:

を私はAForgeを試してみましたが、メモリを使い果たしました:私はイメージ1と画像2を作成するためにCopyfromScreenを使用しました

ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0); 
TemplateMatch[] matchings = tm.ProcessImage(image1.Clone(r, 
     System.Drawing.Imaging.PixelFormat.Format24bppRgb), image2); 

は、私が持っているテンプレートです。

私はLockBitsを試したので、ビットマップ用の2次元コード配列を作成し、赤色のコードを見つけて矩形であればIDを試してみてください。アイデアは4今日。

ウェブは、この上の情報がいっぱいですが、より多くの私はもっと私が:(

混乱とにかく皆さんはここに私を助けてくださいに行く:

+7

は、私は本当に苦労AForgeがメモリを使い果たしたことを信じるを持って – RvdK

+0

非常に非倫理的です。どうやって使ってるの? – GETah

+0

@GETah私は2つの方法を試しました:1. ExhaustiveTemplateMatching(0.485f)の値を変更することで、このリンクのhttp://www.aforgenet.com/framework/features/template_matching.html私は何かを見つけることができます、しかし、私はそれを高く置くと何も見当たりません。中間を見つけることができません。 2.そして2番目のアプローチ私はTemplateMatch []マッチ= 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
    を処理するには1 ...

を繰り返して:あなたは試すことができますのでEmguCVは、今いくつかのCUDAをサポートしていますメソッドのCUDAバージョンを使用します。 aimbotを作る

 //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