簡體   English   中英

使用 opencv 在另一個圖像中查找類似圖像

[英]Find similar image inside another image with opencv

我必須了解圖像是否包含另一個相似的圖像。 這里有2個例子:

在這張圖片里面: 在此處輸入圖像描述 我需要找到這張圖片: 在此處輸入圖像描述

或者在這個里面在此處輸入圖像描述 找到這個在此處輸入圖像描述 .

這個想法是:給定一個輸入圖像和一組圖標,找出輸入圖像中出現的圖標。

我試過使用MatchTemplate和 ORB 和 SIFT 的特征匹配,但我找不到任何有效的匹配。

在這里我嘗試在MatchTemplate中使用 MatchTemplate:

package main

import (
    "fmt"
    "image/color"

    "gocv.io/x/gocv"
)

func main() {
    matImage := gocv.IMRead("/Users/pioz/Desktop/samplex.jpg", gocv.IMReadGrayScale)
    // gocv.Canny(matImage, &matImage, 200, 400)
    matTemplate := gocv.IMRead("/Users/pioz/Desktop/eld.jpg", gocv.IMReadGrayScale)
    // gocv.Canny(matTemplate, &matTemplate, 20, 40)
    matResult := gocv.NewMat()
    mask := gocv.NewMat()
    gocv.MatchTemplate(matImage, matTemplate, &matResult, gocv.TmCcoeffNormed, mask)
    mask.Close()
    minConfidence, maxConfidence, minLoc, maxLoc := gocv.MinMaxLoc(matResult)
    fmt.Println(minConfidence, maxConfidence, minLoc, maxLoc)

    gocv.Circle(&matImage, minLoc, 10, color.RGBA{0, 0, 255, 1}, 10)
    gocv.Circle(&matImage, maxLoc, 10, color.RGBA{0, 0, 255, 1}, 10)

    gocv.IMWrite("out/out.jpg", matImage)
}

你有什么建議或片段來解決這類問題嗎?

我相信這個問題已經被問到了—— 在這里

模板匹配應該是這種圖像處理的最佳技術之一。 因此,如果它不適合您,請嘗試查看/共享您已實現的代碼。

鏈接與 OpenCV 相關,它解釋了feature matching和不同的技術。 還有一些帶有代碼的示例,它們可能會派上用場。 此外,如果SIFT沒有給出令人滿意的結果,請嘗試仿射 SIFT 或ASIFT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM