我正在尝试从图像绘制轮廓。我从摄像头中得到了一个框架,并提取了其轮廓。然后,我按区域过滤它们,并调用drawContours()来显示它们。问题是当我尝试绘制过滤后的轮廓时...如果我绘制原始轮廓,一切正常。这是代码:
size_t contours_size=contours.size();
bool contour_is_valid[contours_size];
size_t filtered_contours=0;
size_t copied_contours=0;
size_t i;
double area;
for(i=0;i<contours_size;i++){
area=contourArea(contours.at(i),false);
if(area>minArea && area<maxArea){
contour_is_valid[i]=true;
filtered_contours++;
}
else{
contour_is_valid[i]=false;
}
}
area_filtered_contours.resize(filtered_contours);
for(i=0;i<contours_size;i++){
if(contour_is_valid[i]==true){
area_filtered_contours.at(copied_contours).resize(contours.at(i).size());
copy(contours.at(i).begin(),contours.at(i).end(),back_inserter(area_filtered_contours.at(copied_contours)));
copied_contours++;
}
}
轮廓是findContours()的输出,因此,它的一个vector <vector <Point>>数据等于area_filtered_contours。我试图做的是生成另一种具有区域意义的有用轮廓的结构。然后
drawContours(cnt_img2,contours,_levels <= 0 ? 3 : -1, 255,1,8,hierarchy, std::abs(_levels) );
工作正常,但
drawContours(cnt_img2,area_filtered_contours,_levels <= 0 ? 3 : -1, 255,1,8,hierarchy, std::abs(_levels) );
给我一个断言错误。可能是什么问题呢?
提前致谢,
费德里科
如您的断言所述:OpenCV错误:声明失败(hierarchy.total()== ncontours && architecture.type()== CV_32SC4)
来自findContours()(opencv.org)的层次结构信息:可选的输出向量,包含有关图像拓扑的信息。它具有与轮廓数量一样多的元素。
更改县数时,还必须编辑层次结构。这是可选输入。最好也编辑或不使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句