我想检测一个包含多个数字的区域(LCD屏幕),我想要做的是: 1.使用cvCanny()将图像转换为边缘图像, 2.使用cvFindContours()来检测轮廓,这里我使用的是TREE模式 3.检测每个轮廓及其子数,如果孩子的数量大于一定数量,则结合轮廓区域和纵横比,即我感兴趣的区域。 我的问题是我使用for(; contours!= NULL; contours = contours-> h_next)循环,但我只能获得最高级别的树及其直接数量的子项,其余的似乎没有通过这种方式包括在内,无论如何,我可以通过每个轮廓并获得每个人的孩子数量?
谢谢!
答案 0 :(得分:4)
您要找的是contours->v_next
。它用于访问轮廓的子轮廓。 h_next
用于在同一级别上迭代轮廓。可能你已经猜到 h 代表水平而 v 代表垂直。
当然,使用cvFindContours()
时,请务必使用CV_RETR_TREE
方法以树形方式获取轮廓。