【问题标题】:How to retrieve the contour points - convert in to vector using opencv ?如何检索轮廓点 - 使用 opencv 转换为矢量?
【发布时间】:2014-05-05 13:30:45
【问题描述】:

如何检索轮廓点 - opencv ?

我的图像有三个对象(不规则形状) 我已经找到了以上三个物体的轮廓。

**我的声明 - 轮廓**

vector<vector<Point>> contours;

所以我得到了如下的对象坐标

contours.[size] = 3
         [capacity ] = 14
         +[0] {size = 330 }
         +[1] {size = 240 }
         +[2] {size = 654 }

这里我有三个轮廓,大小分别为 330、240,654

现在我的疑问是如何将 3 个对象的每个轮廓点复制到向量?

我想在calcOpticalFlowPyrLK函数中使用这个轮廓点作为prevPts

或者可以做什么?

【问题讨论】:

  • 只需使用contours[0]contours[1]contours[2] 即可。
  • @herohuyongtao 我应该如何从轮廓复制到vector<vector<Point>> contoursCvPoint2D32f MyVector
  • CvPoint2D32f 只是一个点,如果您需要复制一个,请查看this thread

标签: c++ opencv image-processing vector contour


【解决方案1】:

- 对我上面的评论再做一点解释。

calcOpticalFlowPyrLK()可以直接使用vector<Point>vector<Point2f>作为参数prevPts

prevPts – 需要找到流的二维点向量;点坐标必须是单精度浮点数。

也就是说,您只需对 3 个对象(它们的类型为 vector<Point>)使用 contours[0]contours[1]contours[2] 并将它们传递给 calcOpticalFlowPyrLK()

【讨论】:

    【解决方案2】:

    herohuyongtao给了你正确的答案。您应该通过选择他的答案作为正确答案来给予他认可。

    我只是添加一个小解释:您的轮廓是向量的向量。它有 3 个元素,每个元素都是一个点向量(可使用 .x 和 .y 访问)。这正是 prevPts 所要求的。 通过将 contour[i] 发送到函数,您将发送第 i 个点向量。 看这里:http://docs.opencv.org/modules/video/doc/motion_analysis_and_object_tracking.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      相关资源
      最近更新 更多