首頁>Program>source

我有2张bmp圖片。 ImageA是螢幕截圖(示例) ImageB是其子集.比如說一个圖標。

我想在ImageA中找到ImageB的X,y坐標(如果存在)。

有人知道我会怎麼做吗?

最新回復
  • 5月前
    1 #

    那麼ImageA中的ImageB是否有變形?

    圖像的"精確度"如何,例如逐个畫素 ?

    您為此拥有多少計算能力?

    如果前两个問题的答案是,那麼您有一个簡單的問题.這也有助於了解 same的答案

    Q3

    基本思想是:不要將imageB中每个畫素週圍的視窗与imageA中每个畫素匹配並檢查相關性,而要確定两个圖像中的兴趣點(或特征),這就是 Update: .因此,由於拐角週圍的區域有點相似(因此不再赘述),因此看起来拐角確實是可追蹤的-因此,让我们在两个圖像中找到一些真正的strong拐角,並搜尋看起来最相似的拐角.

    這减少了用A搜尋B中的每个畫素到搜尋B中的500个角和A中的1000个角(或類似的东西)的問题-更快。

    很棒的事情是你有几个這樣的 trackable 您可以在OpenCV中使用.如果您不類似使用emguCV(C#變體),請使用FAST檢測器查詢匹配的角,从而在圖像之間定位多个特征.找到這些後,您就可以找到圖像左上角的位置。

  • 5月前
    2 #

    這裏是一个快速示例,但速度很慢,大約需要4到6秒,但它確實可以满足您的需求 對於,我知道這个帖子很旧,但是如果最近有人訪問這个帖子 你可以看這个东西 您需要.NET AForge名稱空間或框架google並安裝它 在專案中包含AForge命名空間,仅此而已 它找到另一个,然後给出坐標.

    corner detectors
    

  • 5月前
    3 #

    如果圖像B是圖像A的精確子集(意味着畫素值完全相同),則這不是圖像處理問题,它只是字元串匹配 2D 在99%的情况下,从B的中間形成一條線並將其与A的每條線进行匹配即可達到您想要的效果,並且超快&mdhas; 我猜C#有一个功能.取得匹配項之後(通常是其中的一些),只需將整个B与A的適当部分进行核對即可。

    我能看到的唯一問题是,在某些情况下,您会得到太多的匹配項.例如.如果A是您的桌面,B是圖標,並且您很不幸在B中選擇仅由背景組成的一行.這个問题很容易解決(您必须更仔细地从B中選擇線),但這取決於問题的具體情况。

  • 5月前
    4 #

    在圖像中查詢子圖像
    查詢圖像 在圖像中
    檢查圖像是否在另一个圖像中

    System.Drawing.Bitmap sourceImage = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\1.jpg"); System.Drawing.Bitmap template = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\2.jpg"); // create template matching algorithm's instance // (set similarity threshold to 92.1%) ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.921f); // find all matchings with specified above similarity TemplateMatch[] matchings = tm.ProcessImage(sourceImage, template); // highlight found matchings BitmapData data = sourceImage.LockBits( new Rectangle(0, 0, sourceImage.Width, sourceImage.Height), ImageLockMode.ReadWrite, sourceImage.PixelFormat); foreach (TemplateMatch m in matchings) { Drawing.Rectangle(data, m.Rectangle, Color.White); MessageBox.Show(m.Rectangle.Location.ToString()); // do something else with matching } sourceImage.UnlockBits(data);

  • svg:如何將d3js圖形轉換/儲存為pdf /jpeg
  • java:在Gson中反序列化一个抽象類