OpenCV 模板匹配 N 个最佳匹配不起作用

2024-04-10

我已经为此苦苦挣扎了很长一段时间,但似乎找不到这里的问题。让我尝试引导您完成整个过程。

我正在尝试为我的模板匹配获取 10 个最佳边界框。

不会在这里显示整个图像,但这是我的cv::mat当我循环遍历cv::mat搜索最低值(结果)

 int a,b;
    for ( a = 0; a < final_image_height; a++){
      for ( b = 0; b < final_image_width; b++){
        if (result_scores_mat.at<float>(a, b) < 70 ){
          printf("%.2f ", result_scores_mat.at<float>(a, b));
        }
      }
    }

这给了我一些存在于cv::mat具有“较低的值”

68.50 68.93 54.50 68.92 64.62 57.12 62.69 65.86 63.52 68.35 68.65 61.93 69.18 67.69 

然后我进入一个循环,我调用minMaxLoc()找到minVal (using TM_SQDIFF, so minVal)

for ( i = 0; i < 10; i++){
      minMaxLoc(result_scores_mat, &minVal, &maxVal, &minLoc, &maxLoc, cv::Mat());

      cout<<minVal<<endl;

      // for match_method TM_SQDIFF we take lowest values
      matchLoc = minLoc;
      drawRadius = result_radius_mat.at<float>(matchLoc.x, matchLoc.y); 

      // display source image and result matrix , draw rectangle around highest possible matching area
      cv::rectangle( img_display_mat, matchLoc, cv::Point( matchLoc.x + 2*drawRadius, matchLoc.y + 2*drawRadius), cv::Scalar::all(255), 2, 8, 0);  

      result_scores_mat.at<float>(minLoc.x, minLoc.y)= 255;
    }

我在最后一行所做的是将浮点值替换为minLoc,以便我运行下一个循环minMaxLoc没有找到那个点并给我下一个最小值cv::mat.

但是,我不断收到这样的输出cout<<minVal<<endl;

54.5003
54.5003
54.5003
54.5003
54.5003
54.5003
54.5003
54.5003
54.5003
54.5003

它正确检测到 54.50 存在于cv::mat,但我想要循环中的所有最小值。

我做错了什么,或者有什么办法可以解决这个问题吗?太感谢了!


看来您以错误的方式用 255 替换最小值,这意味着您正确检测了最小值,但是您在错误的位置替换了 255,您应该替换以下行

result_scores_mat.at<float>(minLoc.x, minLoc.y)= 255;

通过这一行:

result_scores_mat.at<float>(minLoc.y, minLoc.x)= 255;

要了解为什么我们要互相替换这些行,您可以查看源代码 https://github.com/opencv/opencv/blob/89d3f95a8eea50acbfb4b8db380d5a4dc8a98173/modules/core/include/opencv2/core/mat.hpp#L1920 of .at方法如下

template<typename _Tp> _Tp& at(int row, int col);
/** @overload
@param row Index along the dimension 0
@param col Index along the dimension 1
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV 模板匹配 N 个最佳匹配不起作用 的相关文章

随机推荐

  • Rust 中模式匹配中的类型注释?

    我正在深入研究 Rust 特别是优雅地处理错误 但我在类型推断方面遇到了一些麻烦 extern crate mysql use mysql as my fn main my test fn my test gt Result lt my E
  • Oracle SQL 将日期格式从 DD-Mon-YY 转换为 YYYYMM

    我要比较 2 个表中的日期 但问题是一个表的日期采用 DD Mon YY 格式 另一个表的日期采用 YYYYMM 格式 我需要将它们都设为 YYYYMM 进行比较 我需要创建这样的东西 SELECT FROM offers WHERE of
  • 为什么元素在警报之前不显示?

    在这个简单的例子中https jsfiddle net 4rsje4b6 1 https jsfiddle net 4rsje4b6 1 为什么是 test在警报出现之前元素未显示 jQuery 不应该吗 css 方法是同步的吗 test
  • 如何告诉 TSC 脚本文件不会共享作用域并忽略重新声明

    问题 疑问 我正在使用 VSCode 的 TS 驱动的 JS 检查功能来对一堆 JS 文件进行类型检查 这些文件将通过以下方式导入
  • 如何制作具有部分透明边框的任意大小的 html 元素?

    考虑下图 这应该看起来像一片边缘粗糙 有斑点 的草 这是一张 200x200 像素的 png 图像 边缘具有透明度以提供自然的外观 问题是 我正在尝试设计一个网页 我希望所有不同尺寸的各种元素都具有此背景 但我无法使用简单的 css 背景属
  • 如何向 Android 应用程序提供 Jacoco 代理?

    我正在尝试使用 Jacoco 进行手动测试来获得代码覆盖率 我正在尝试使用离线仪器 http www eclemma org jacoco trunk doc offline html http www eclemma org jacoco
  • 如何创建自己的 Haar 级联分类器以进行自定义对象检测? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想检测汽车 但可用的 xml 文件对于准确检测来说不太强大 如何创建自定义 xml 文件 我可以为任何对象创建 任何帮助 将不胜感激
  • 如何使用 JQuery 访问 WTForm

    我想请求有关访问 WTForm 字段的帮助 我有以下表格 class model bolt InputForm FlaskForm Bolt Inputs bolt size SelectField Bolt size mm choices
  • 动态初始化

    C 03标准 basic start init 第3点 states 是否动态是实现定义的 命名空间对象的初始化 8 5 9 4 12 1 12 6 1 作用域是在 main 的第一个语句之前完成的 如果 初始化被推迟到第一次之后的某个时间
  • 如何在使用 jQuery 添加新行时刷新简单的数据表

    我认为这个很简单 但我找不到与 ajax 加载的数据或数组中提供的数据无关的参考 我在现有的 HTML 表上使用 DataTables 基本代码如下 table wizard dataTable lengthChange false iDi
  • 测试使用 IntersectionObserver 的代码

    我的应用程序中有一个处理无限滚动分页的 JavaScript 组件 我正在尝试重写它以使用IntersectionObserver 如上所述here https developers google com web updates 2016
  • 为每个因子组添加单独的 vlines 到 ggplot(变量重要性随机森林的点图)

    我正在使用 ggplot2 制作随机森林中六个相关变量重要性结果的点图 我的数据 我已经使用 reshape2 将其转换为长格式 如下所示 我的真实数据集有点大 Factor Group Value Gender A 0 000127 Ag
  • 如何在 emacs elisp 中查找哪个文件提供该功能

    目前我正在使用加载历史记录变量来查找某个功能来自的文件 假设找到该文件的特征gnus来自 我在暂存缓冲区中执行以下代码 该代码在单独的行中连续打印文件名和符号 dolist var load history princ format s n
  • 正则表达式和 GWT

    我的问题是 在GWT中使用正则表达式有没有好的解决方案 例如 我对 String split regex 的使用不满意 GWT 将代码翻译为 JS 然后将正则表达式用作 JS 正则表达式 但我无法使用 Java Matcher 或 Java
  • 使应用程序在越狱设备上自行重启

    我的 iOS 应用程序是否可以在每次用户访问其主屏幕时自动重新启动 这是针对越狱设备的 该应用程序不适用于应用程序商店 一般来说 鉴于应用程序外部的特定用户操作 如何让我的应用程序重新启动 加速度计 如果您只想让您的应用程序在遇到某些加速计
  • 使用其名称来响应渲染组件

    我正在试验 React js 它运行得非常好 我想知道是否可以将类注入到其他类中 如下所示 var Container React createClass render function lt this props implComponen
  • Windows 中的 Perl Kill(0, $pid) 总是返回 1

    我正在尝试制作一个 Perl 脚本来运行 Windows 中的一组其他程序 我需要能够捕获进程的 stdout stderr 和退出代码 并且需要能够查看进程是否超出了分配的执行时间 现在 我的代码的相关部分如下所示 pid open3 w
  • 如何在 Rails 中实现计数器缓存?

    我有一个帖子控制器和一个评论控制器 帖子有很多评论 评论属于帖子 关联是在 counter cache 选项打开的情况下设置的 如下所示 Inside post rb has many comments Inside comment rb
  • 自定义指令中的 ng-class 不观察更新

    我正在尝试创建一个像这样使用的指令
  • OpenCV 模板匹配 N 个最佳匹配不起作用

    我已经为此苦苦挣扎了很长一段时间 但似乎找不到这里的问题 让我尝试引导您完成整个过程 我正在尝试为我的模板匹配获取 10 个最佳边界框 不会在这里显示整个图像 但这是我的cv mat当我循环遍历cv mat搜索最低值 结果 int a b