Python中的OpenCV提供以下代码:
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)
这给出了轮廓内的一些轮廓。如何在Python中删除它们?
答案 0 :(得分:11)
为此,您应该查看this tutorial有关如何使用方法hierarchy
返回的findContours
对象的信息。
重点是您应该使用cv2.RETR_TREE
代替cv2.RETR_LIST
来获得群集之间的父/子关系:
regions, hierarchy = cv2.findContours(binary_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
然后,您可以通过检查i
是否等于-1来检查索引hierarchy[0,i,3]
的轮廓是否在另一个中。如果它与-1不同,则轮廓在另一个内部。
答案 1 :(得分:0)
img_output, contours, hierarchy = cv2.findContours(blank_image_firstImage, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
这将删除子轮廓