在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)
,但没有用。如果您找到了更好的方法,请在此处发布并分享智慧。