gpt4 book ai didi

c++ - OpenCV:使用 drawContours() 断言失败

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:50 25 4
gpt4 key购买 nike

我正在尝试从图像中绘制轮廓。我从我的网络摄像头得到了一个框架并提取了它的轮廓。然后,我按区域过滤它们,并调用 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++;
}
}

contours 是 findContours() 的输出,因此,它是一个与 area_filtered_contours 相等的 vector< vector < Point >> 数据。我想要做的是生成另一个类似的结构,它在区域意义上具有有用的轮廓。然后

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 && hierarchy.type() == CV_32SC4)

来自 findContours() (opencv.org) 的层次结构信息:可选输出 vector ,包含有关图像拓扑的信息。它具有与轮廓数量一样多的元素。

当您更改国家/地区的数量时,您还必须编辑层次结构。这是一个可选的输入。也编辑它或不使用它。

关于c++ - OpenCV:使用 drawContours() 断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23744045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com