python - 使用 opencv 在另一个图像中查找相似图像

标签 python c opencv go image-processing

我必须了解一张图片是否包含另一张相似图片。这里有 2 个例子:

在这张图片内:enter image description here我需要找到这张图片:enter image description here

或在这个 enter image description here 里面找到这个enter image description here .

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

我已经尝试使用 MatchTemplate 并使用 ORB 和 SIFT 进行特征匹配,但我找不到任何有效的匹配项。

这是我在 Go 中使用 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)
}

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

最佳答案

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

模板匹配应该是此类图像处理的最佳技术之一。因此,如果它不适合您,请尝试查看/共享您已实现的代码。

关于python - 使用 opencv 在另一个图像中查找相似图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603355/

相关文章:

opencv - Emgu Cv MatchTemplate可在C#中处理数百万个图像?

python - Numpy:n 个向量的外积

python - 有没有适用于 python 的 yahoo Messenger 库?

c - time(time_t *timer) 在系统中没有时间漂移的情况下给出错误的结果

c - 反转c中的单词

c++ - 取消引用 "cv::Mat* "指向 cv::Mat 的指针以接收 Gstreamer 视频并在 OpenCV 中使用

c++ - OpenCV cpp 运动检测

python - 如何让python装饰器像标签一样工作来进行函数调用 "by tag"

python - PyGtk3,Label Widget,有没有一种方法可以获取标签文本的标记字符串?

c - 使用队列进行图 BFS 遍历 [C]