在OpenCV中使用drawContours连接四个点

时间:2015-01-15 02:35:53

标签: c++ opencv

我有一个4分的向量:

vector<vector<Point> > data(4);
data[0].push_back(Point(0,0));
data[1].push_back(Point(0,120));
data[2].push_back(Point(180,100));
data[3].push_back(Point(70,0)); 

我想连接它们并在图像上绘制形状。 我尝试使用drawContours函数,但此代码不起作用:

for( int i = 0; i< data.size(); i++ )
     {
       drawContours(input,data,i,Scalar(0,255,0),10,LINE_8);
     }    

2 个答案:

答案 0 :(得分:1)

您的数据&#39;包含4个轮廓。每个轮廓都有一个在图像上绘制的点。你需要的是1个4点轮廓。将所有点推到数据[0]。

另外,您不需要在循环中调用drawContours()。如果提供轮廓的负指数(第三个参数),则将绘制所有轮廓。

vector<vector<Point> > data(1);
data[0].push_back(Point(0,0));
data[0].push_back(Point(0,120));
data[0].push_back(Point(180,100));
data[0].push_back(Point(70,0));
drawContours(input, data, -1, Scalar(0,255,0), 10, LINE_8);

答案 1 :(得分:0)

如果你只有4分,我建议你使用cv :: Rectangle。如果你有很多分数,你必须使用cv::Line编写一个函数。