gpt4 book ai didi

c# - 模板匹配-显示多个位置

转载 作者:行者123 更新时间:2023-12-02 16:21:25 26 4
gpt4 key购买 nike

您好,我正在Emgu(C#的OpenCV包装器)中编写模板匹配功能。
总的来说,我正在尝试为100个最佳匹配编写Match Template函数。
我已经为CPU和GPU制作了matchtemplate,但是我只能获得1个maxLocation(仅1个搜索模板的位置,在源img中大约有10个)。我已经阅读了有关FloodFill的信息,可以将其删除,但最多只能删除一次,再次调用MinMax将给我第二个最大值。但是我无法写(我花了大约两天时间,所以我没有希望)

 string path = @"C:\Users\Samuel\Desktop";
string imgtemplate = path+@"\TV.bmp";//smallImg
string imgsource = path+ @"\desktop.bmp";//bigImg

Image<Bgr, byte> source = new Image<Bgr, byte>(Imgsource);
Image<Bgr, byte> template = new Image<Bgr, byte>(Imgtemplate);

using (Image<Gray, float> result = source.MatchTemplate(template, TemplateMatchingType.SqdiffNormed))
{

double[] minValues, maxValues;
Point[] minLocations, maxLocations;
result.MinMax(out minValues, out maxValues, out minLocations, out maxLocations);
Console.WriteLine("minVal: " + minValues[0] + " maxVal: " + maxValues[0] + " minLoc: " + minLocations[0] + " maxLoc: " + maxLocations[0]);
}

我将非常感谢您的帮助。
谢谢 !

最佳答案

我对C#不熟悉,但这是用C++编写的代码,可以完成您想做的事情:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/videoio/videoio.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;

int main()
{
Mat imgSrc, mask;
Mat templatePatch, match;

imgSrc = imread("C:/Users/be92136/Documents/Qt_Projects/Videos/grimpe1.png", IMREAD_GRAYSCALE);
templatePatch = imgSrc(Rect(50, 50, 50, 50));

Point maxLoc;
Size patchSize = Size(50, 50);

matchTemplate(imgSrc, templatePatch, match, CV_TM_CCOEFF_NORMED);
mask = Mat::ones(match.size(), CV_8UC1);

for(int i=0; i<100; i++)
{
minMaxLoc(match, NULL, NULL, NULL, &maxLoc, mask);
Rect bestMatch = Rect(maxLoc, patchSize);
Mat roi = mask(bestMatch);
roi.setTo(0);
}

return 0;
}

它使用一个在开头填充一个掩码的掩码(这意味着minMaxLoc函数将整个匹配图像都考虑在内)。每次找到新的最大值时,都会从掩码中删除给定的区域,并且下次调用minMaxLoc时不会考虑该区域。

关于c# - 模板匹配-显示多个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45043504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com