C++ contourArea()c+;的断言失败错误(-215)+;OpenCV 2.3.1
我想过滤轮廓的图像(网络摄像头)的面积。我使用findContours(),然后使用approxPolyDP()将它们转换为闭合多边形。在此之后,我想使用此函数按面积(生成具有“有用”轮廓的另一个结构的函数)对其进行过滤:C++ contourArea()c+;的断言失败错误(-215)+;OpenCV 2.3.1,c++,opencv,C++,Opencv,我想过滤轮廓的图像(网络摄像头)的面积。我使用findContours(),然后使用approxPolyDP()将它们转换为闭合多边形。在此之后,我想使用此函数按面积(生成具有“有用”轮廓的另一个结构的函数)对其进行过滤: std::vector<vector<Point> > _filterByArea(double minArea,double maxArea,const std::vector<vector<Point> > contours
std::vector<vector<Point> > _filterByArea(double minArea,double maxArea,const std::vector<vector<Point> > contours){
size_t ncontours=contours.size();
size_t useful_contours=0;
size_t i,j;
double area;
std::vector<vector<Point> > filtered_contours;
for(i=0;i<ncontours;i++){
area=contourArea(contours[i],false);
if(area>minArea && area<maxArea){
useful_contours++;
}
}
filtered_contours.resize(useful_contours);
useful_contours=0;
for(i=0;i<ncontours;i++){
double area=contourArea(contours[i],false);
size_t contour_size=contours[i].size();
if(area>minArea && area<maxArea){
for(j=0;j<contour_size;j++){
//filtered_contours[useful_contours].resize(contour_size);
filtered_contours.at(useful_contours).push_back(contours.at(i).at(j));
//filtered_contours.insert(filtered_contours.begin(),contours.at(i).begin(),contours.at(i));
}
useful_contours++;
}
}
return filtered_contours;
std::vector\u filterByArea(双minArea,双maxArea,常数std::vector等高线){
size_t=等高线。size();
有用轮廓的大小=0;
尺寸i,j;
双区;
std::矢量滤波的_轮廓;
对于(i=0;iminArea&&Area)我没问题。我使用的是OpenCV 3.3。也许你应该知道,你的轮廓线不正确,或者是一个固定的错误。