//在项目中往往需要对嵌套的多个轮廓进行区分,当父轮廓拥有多个不同深度的子轮廓时,需要计算该父轮廓的最大深度;
struct CTData
{
CvSeq * seq;
int layer;
};
int GetLayerCnt(CvSeq *seq)
{
int count = 0, maxV = 0;
stack<CTData> data;
CTData ca;
CvSeq *tmpContour = 0;
ca.seq = seq;
ca.layer = 0;
data.push(ca);
while (!data.empty())
{
seq = data.top().seq;
count = data.top().layer;
data.pop();
while (seq->v_next)
{
count++;
seq = seq->v_next;
//all of brothers enter into stack;
tmpContour = seq->h_next;
while (tmpContour)
{
ca.seq = tmpContour;
ca.layer = count;
data.push(ca);
tmpContour = tmpContour->h_next;
}
}
if (maxV < count)
{
maxV = count;
}
}
return maxV;
}
获取轮廓深度
最新推荐文章于 2022-05-13 15:45:18 发布