【问题标题】:Contour finding轮廓查找
【发布时间】:2010-11-11 07:43:41
【问题描述】:

我想检测一个包含几个数字的区域(液晶屏),我想做的是: 1. 使用 cvCanny() 将图像转换为边缘图像, 2.使用cvFindContours()检测轮廓,这里我使用的是TREE模式 3. 检测每个轮廓及其子节点数量,如果子节点数量大于一定数量,结合轮廓区域和纵横比,就是我感兴趣的区域。 我的问题是我正在使用 for(;contours!=NULL;contours=contours->h_next) 循环,但我只能获得树的最顶层及其直接子节点数,其余的似乎不包括在内这样一来,有没有办法通过每一个轮廓,得到每个人的孩子数量?

谢谢!

【问题讨论】:

    标签: image-processing opencv


    【解决方案1】:

    您正在寻找的是contours->v_next。它用于访问轮廓的子轮廓。 h_next 用于在同一级别上迭代轮廓。可能你已经猜到 h 代表 horizo​​ntalv 代表 vertical

    当然,在使用cvFindContours() 时,一定要使用CV_RETR_TREE 方法以树的方式获取轮廓。

    【讨论】:

    • 感谢您的回复。是的,我知道 v_next,但是如何处理我的问题呢?假设我有 10 张不同的图像,我不能一张一张地穿过树。
    • 您可以在 v_next->h_next 上循环并计算孩子数。因为它们是指针,所以循环是一种廉价的操作,不用担心。
    • 非常感谢您的帮助,我还有一件事要确定,对于 h_next 和 h_prev,这两个只能链接具有相同父级的序列,对吗?如果来自两个不同父母的两个孩子,他们不能被 h_next 使用,对吧?
    • 你是绝对正确的。也许你应该看看树遍历方法:en.wikipedia.org/wiki/Tree_traversal
    猜你喜欢
    • 2012-12-08
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多