【问题标题】:c++ vector of vectors size of the next column下一列的向量大小的c ++向量
【发布时间】:2013-10-11 17:36:32
【问题描述】:

我正在编写一个代码来使用 cv::matchTemplate 进行一些模板匹配,但是我遇到了我创建的向量的二维向量 (vov) 的一些问题,我称之为 vvABC。目前,我的 vov 有 10 个元素,可以根据我在运行代码时传递的值进行更改。

我的问题是从我的 vov 中的一列移动到下一列,以便我可以计算大小。根据我对 vov 工作原理的理解,如果我将元素存储在我的 vov 中:

C_A  C_B
 0    0
 1    1
 2    2
      3
      4
      5
      6

要计算第一列的大小,我应该简单地执行以下操作: vvABC[0].size() 获取第一列的大小(在这种情况下将给出 3)和 vvABC[1].size() 获取第二列的大小(将给出 7)。我现在面临的问题是他们在两种情况下都给出'3',这显然是错误的。

有人可以帮助我了解如何获得下一列的正确大小吗?

我将我的检测结果存储在我的 vvABC 中,现在我想一次匹配一个。

【问题讨论】:

  • 很好的解释,但如果你展示一些代码,你可能会得到更好的答案——特别是你如何创建和填充 vvABC。
  • @Markku:我把代码贴出来了……用cmets,希望通俗易懂……

标签: c++ opencv vector detection template-matching


【解决方案1】:

看来你在这里搞错了:

for (uint iCaTemplate = iCa + 1; iCaTemplate < vvABC[iCa].size(); ++iCaTemplate) {

iCa 是向量“第一级”的索引(在上面的示例中大小为 2),即列,您可以使用它来遍历“第二级”的元素向量的级别,即行。

【讨论】:

  • @JGab 好的,它的工作方式类似于:[columns][rows]?那么如何进入下一列以便获得它的大小?因为我也需要遍历那里的所有检测
  • @ JGab...但是如果它是 vv[columns][row] 那么它应该仍然有效,因为 vv[0][0] 将是第 0 列中的第一个元素。然后 vv[1 ][0] 将是第 1 列的第一个元素...假设编号从 0 开始。所以 vvABC[iCaTemplate].size() 应该返回第 1 列的大小,对吧?这就是我的想法,但事实并非如此……您知道如何获得第一列中元素的大小吗?这就是我需要让代码正常工作的全部内容。
  • 它是如何工作的无关紧要,你可以随心所欲地想它(行、公共或相反)。是的,你是正确的 vvABC[iCaTemplate].size() 将返回第一列 IF iCaTemplate==0 的大小。我指出的是,您在我突出显示的语句中混合了列索引和行索引。
  • @JGab...感谢您的所有帮助...我终于找到了问题所在,我在代码的前面部分犯了一个错误。
【解决方案2】:

非常感谢大家,尤其是。 JGab,经过几次调试输出后,我终于发现我的向量向量并没有像我想象的那样被填满……再次感谢并为我迟来的回复道歉。

【讨论】:

  • 没问题,很高兴你能找到错误!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 2011-05-30
  • 1970-01-01
  • 2021-04-09
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多