在OpenCV中绘制单个轮廓的最佳方法是什么?据我所知drawContours只能处理多个轮廓。

背景:我想将每个循环的代码更改为。旧代码:

//vector<vector<Point> > contours = result of findContours(...)
for (int i = 0; i < contour.size; i++){
    if(iscorrect(contours[i])){
        drawContours(img, contours, i, color, 1, 8, hierarchy);
    }
 }

in this mailing list呈现的方式非常难看:
for (vector<Point> contour : contours){
     if(iscorrect(contour)){
          vector<vector<Point> > con = vector<vector<Point> >(1, contour);
          drawContours(img, con, -1, color, 1, 8);
     }
}

有没有一种更干净的方法来绘制单个轮廓(vector Object)?

最佳答案

我有同样的问题,到目前为止,发现的更好的方法是:

for (vector<Point> contour : contours){
  if(iscorrect(contour)){
    drawContours(img, vector<vector<Point> >(1,contour), -1, color, 1, 8);
  }
}

这几乎与您所拥有的相同,但是少了一行。

我的第一个想法是使用Mat(contour),但没有用。

如果您找到了更好的方法,请在此处发布并分享智慧。

10-02 07:16