如何检索轮廓点 - 使用opencv转换为矢量?

时间:2014-05-05 13:30:45

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

如何检索轮廓点 - 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

或者可以做些什么?

2 个答案:

答案 0 :(得分:1)

- 对我上述评论的更多解释。

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

  

prevPts - 需要找到流量的2D点的矢量;点坐标必须是单精度浮点数。

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

答案 1 :(得分:0)

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

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