首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用opencv在另一张图像中查找相似的图像

使用opencv在另一张图像中查找相似的图像
EN

Stack Overflow用户
提问于 2019-10-29 16:03:56
回答 2查看 2K关注 0票数 3

我必须了解一个图像是否包含另一个类似的图像。这里有两个例子:

在此图像中:

我需要找到这个图像:

或者在这个里面

找到这个

其思想是:给定一个输入图像和一组图标,找出输入图像中存在的图标。

我尝试将MatchTemplate和特征匹配与ORB和SIFT一起使用,但我找不到任何有效的匹配。

下面是我在Go中尝试使用MatchTemplate的方法:

代码语言:javascript
复制
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)
}

你有什么建议或片段来解决这类问题吗?

EN

回答 2

Stack Overflow用户

发布于 2019-10-29 16:28:03

我相信这个问题已经被问过了-- here

模板匹配被认为是这类图像处理的最佳技术之一。因此,如果它对你不起作用,试着检查/分享你已经实现的代码。

票数 0
EN

Stack Overflow用户

发布于 2019-10-29 19:42:24

link与OpenCV相关,它解释了feature matching和不同的技术。也有一些代码的例子,可能会用到。另外,如果SIFT没有给出统计结果,可以尝试使用仿射SIFT或ASIFT

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58603355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档