gpt4 book ai didi

opencv - opencv,模板匹配

转载 作者:行者123 更新时间:2023-12-02 17:53:08 27 4
gpt4 key购买 nike

我正在为某些项目使用opencv。并有应解决的任务。
任务很简单。我有一张主图片,并且有一个模板,而不是将主图片与模板进行比较。我使用matchTemplate()函数。我只是好奇一下。
在文档中,我发现以下信息:
为了识别匹配区域,我们必须通过滑动将模板图像与源图像进行比较。
通过滑动,我们的意思是将补丁一次移动一个像素(从左到右,从上到下)。在每个位置,都会计算一个指标,以便表示该位置的匹配程度是“好”还是“差”(或补丁与源图像特定区域的相似程度)。
对于T在I上的每个位置,都将度量存储在结果矩阵(R)中。 R中的每个位置均包含匹配指标。

因此,例如,您有主要图片和模板。而且您知道至少在主图片中有一个模板条目。而且效果很好。但是,如果您不知道主画面0或10中有多少个模板?有什么计算方法吗?应该使用哪种算法?如何理解结果矩阵中的度量标准?
提前致谢。

最佳答案

matchTemplate()函数创建一个新的矩阵,其中每个像素都包含给定模板在该点与图像匹配的值。为了检测与模板匹配的所有区域,您需要遍历结果矩阵并检查每个像素是否超过某个阈值。
如果像素超过阈值,则表示它是图像中与模板匹配的区域的左上角。一个简单的实现可能看起来像这样:

double PATT_THRESH = 0.4
IplImage *result = cvCreateImage(cvSize(imageW, imageH), IPL_DEPTH_32F, 1);
vector<CvPoint> foundTemplates;
cvMatchTemplate(image, pattern, result, CV_TM_SQDIFF_NORMED);
for (int i = 0 ; i < result->width ; ++i) {
for (int j = 0 ; j < result->height ; ++j) {
if (cvGet2D(result, j, i).val[0] < PATT_THRESH) {
foundTemplates.push_back(cvPoint(i, j);
}
}

}

我不知道您使用的是哪种语言,但是很容易翻译成其他语言。希望能有所帮助。

关于opencv - opencv,模板匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14810997/

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