繁体   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