【发布时间】:2017-05-24 23:52:25
【问题描述】:
我想找到苹果的所有轮廓,但是当我使用contours.size()时,轮廓的数量超过了苹果的数量。
以下是找轮廓的图和我在上面画轮廓的图,以及程序的结果。
这里是代码。
//Contours
vector<vector<Point>> contours,hull;
vector<Vec4i> hierarchy;
RNG rng(12345);
findContours(con, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
cout<<"contours.size(): "<<contours.size()<<endl;
cout<<"hierarchy.size(): "<<hierarchy.size()<<endl;
//draw contours and calculate areas
int area[10];
int currentareaCounted = 0;
for(int i = 0; i<contours.size()-1; i++){
Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0, 255), 255);
drawContours(contoursImg, contours, i, color, 2, 8, hierarchy);
Mat drawingMatCount = cv::Mat::zeros(src_color.rows,src_color.cols, CV_8UC1);
drawContours(drawingMatCount, contours, i, 255, -1, 8);
currentareaCounted = countNonZero(drawingMatCount);
area[i]=currentareaCounted;
cout<<i<<"'th area "<<" : "<<currentareaCounted<<endl;
}
我很困惑为什么 contous.size() 是 7。它让我在用来绘制轮廓的循环中使用了 contours.size()-1,否则程序会中断。
如果有人发现任何错误,希望告诉我。非常感谢。
【问题讨论】: