Hierarquia da árvore de contorno do OpenCV em Python

Estou tentando implementar o algoritmo encontradoAqui em python com OpenCV.

Eu estou tentando implementar a parte do algoritmo que remove limites de borda irrelevantes com base no número de limites internos que eles têm.

Se o limite de borda atual tiver exatamente um ou dois limites de borda internos, os limites internos poderão ser ignoradosSe o limite de borda atual tiver mais de dois limites de borda internos, ele poderá ser ignorado

Estou tendo problemas para determinar a estrutura da árvore dos contornos que extraí da imagem.

Minha fonte atual:

import cv2

# Load the image
img = cv2.imread('test.png')
cv2.copyMakeBorder(img, 50,50,50,50,cv2.BORDER_CONSTANT, img, (255,255,255))

# Split out each channel
blue = cv2.split(img)[0]
green = cv2.split(img)[1]
red = cv2.split(img)[2]

# Run canny edge detection on each channel
blue_edges = cv2.Canny(blue, 1, 255)
green_edges = cv2.Canny(green, 1, 255)
red_edges = cv2.Canny(red, 1, 255)

# Join edges back into image
edges = blue_edges | green_edges | red_edges

# Find the contours
contours,hierarchy = cv2.findContours(edges.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

# For each contour, find the bounding rectangle and draw it
for cnt in contours:
    x,y,w,h = cv2.boundingRect(cnt)
    cv2.rectangle(edges,(x,y),(x+w,y+h),(200,200,200),2)

# Finally show the image
cv2.imshow('img',edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

Presumi que usar RETR_TREE me daria uma boa disposição aninhada dos contornos, mas esse não parece ser o caso. Como faço para recuperar a estrutura da árvore dos meus contornos?

questionAnswers(1)

yourAnswerToTheQuestion