import numpy as np
cnts, hierarchy = cv2.findContours(edged, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
area = []
for k in range(len(cnts)):
area.append(cv2.contourArea(cnts[k]))
max_id = np.argmax(np.array(area))
cnt = cnts[max_id]
a=np.array(hierarchy)
cv2.drawContours(self.image, cnts[max_id:child_end],-1, (0, 255, 0), 7)
需要画出最大面积轮廓的所有下一层子轮廓,最大面积轮廓的索引max_id有了,下一层子轮廓是排在父轮廓后面,只要得到最后一个下一层子轮廓的索引,就可以确定轮廓号的范围,但是怎么得到下一层子轮廓的最后一个索引child_end呢,层级关系是一个一行四列的数组,其中第四列是记录父轮廓parent,比如:
hierarchy
array([[[ 7, -1, 1, -1],
[-1, -1, 2, 0],
[-1, -1, 3, 1],
[-1, -1, 4, 2],
[-1, -1, 5, 3],
[ 6, -1, -1, 4],如何查找这个4所在这一行索引
[-1, 5, -1, 4],如何查找这个4所在这一行索引
[ 8, 0, -1, -1],
[-1, 7, -1, -1]]])
如何查找第四列父轮廓parent等于4的索引呢?
child_end=max(np.where(a[3]==4))吗?似乎不行