How to remove a path inside a path in Python OpenCV?

OpenCV in Python provides the following code:

regions, hierarchy = cv2.findContours(binary_image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) for region in regions: x, y, w, h = cv2.boundingRect(region) cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 1) 

This gives some contours inside the contour. How to remove them in Python?

+5
source share
1 answer

To do this, you should take a look at this tutorial on how to use the hierarchy object returned by the findContours method.

The main thing is that you should use cv2.RETR_TREE instead of cv2.RETR_LIST to get the relationship between parents and children between your clusters:

 regions, hierarchy = cv2.findContours(binary_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) 

Then you can check if the path with index i inside another if hierarchy[0,i,3] is -1 or not. If it is other than -1, your path is inside another.

+5
source

All Articles