我无法按照我想要的方式格式化我的numpy数组。我检查了几个帖子,如How to remove specific elements in a numpy array,大多数似乎很接近,但没有一个我想要的。如果这个问题是一个重复点,我指向正确的方向。
im2, contours, hierarchy = cv2.findContours(th2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
轮廓给了我这个:
print(contours)
我明白了:
[array([[[618, 737]]], dtype=int32), array([[[615, 737]]], dtype=int32), array([[[656, 731]],
[[655, 732]],
[[651, 732]],
[[649, 734]],
[[648, 734]],
[[647, 735]],
[[646, 734]],
[[645, 735]],
[[644, 735]],
[[643, 736]],
[[641, 736]],
[[640, 737]],
[[686, 737]],
[[686, 734]],
但是我希望得到的输出可以为我提供这种格式的元组:
(x, y)
或者如果有另一种方法我可以访问数组中的整数,这些整数我已经尝试但是没有得到我想要的东西
contours = tuple(map(tuple, contours))
contours = totuple(contours)
请帮助我成为新手
答案 0 :(得分:1)
你在找这样的东西吗?
[[tuple(xy[0]) for xy in contour] for contour in contours]
#[[(618, 737)],
# [(615, 737)],
# [(656, 731), (655, 732), (651, 732), (649, 734), (648, 734)]]
如果你想要一个平面列表:
[tuple(xy[0]) for contour in contours for xy in contour]
#[(618, 737),
# (615, 737),
# (656, 731),
# (655, 732),
# (651, 732),
# (649, 734),
# (648, 734)]