Opencv轮廓层次结构

时间:2015-01-09 15:28:36

标签: c++ opencv image-processing contour

我试图访问嵌套在另一个轮廓中的轮廓,对其进行一些测试,例如区域测试,以及查看边界矩形是否为正方形。我想出了如何测试是否有内部轮廓,但我不知道如何访问它。

相关代码

vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
DEBUG_SHOW("binary image", binary);
findContours(binary, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
vector<vector<Point> > polygons(contours.size());
for (size_t i = 0; i < contours.size(); i++) {
    vector<Point> contour = contours[i];
    double area = contourArea(contour);
    if (area < 300) {
        continue;
    }
    if(hierarchy[i][2] != -1){ 
        //test internal contour
    }

1 个答案:

答案 0 :(得分:0)

如果我正确,那么你有一套积分

 Vector<point>

然后你有这些集合的集合

 Vector<Vector<point>>

现在考虑到这一点。您使用

遍历Vector(点)
for (size_t i = 0; i < contours.size(); i++) {

&安培;您需要在

中迭代矢量

您需要:

for (size_t j=0; j = contours.at(i).size(); j++){
    //Do Your Thang
    i++;
}