在 OpenCV 中使用 drawContours 连接四个点

Connecting four points with drawContours in 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);
     }    

如果你只有4点,我建议你使用cv::Rectangle。如果你能有很多点,你得写一个函数使用cv::Line

您的 'data' 包含 4 个等高线。每个轮廓都有一个绘制在图像上的点。您需要的是 1 个具有 4 个点的轮廓。将您所有的积分推送到 data[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);