【发布时间】:2014-04-08 08:00:38
【问题描述】:
以下是OpenCV返回的轮廓结构。它嵌套很深,元组的第一个元素是轮廓中的点列表。
有没有办法将其转换为二维点列表 (n x 2)?我认为可以使用numpy.reshape,但我找不到一个非常通用的方法来做到这一点。谢谢。
contours = cv2.findContours(bw_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours =>
([array([[[ 19, 20]],
[[ 18, 21]],
[[ 17, 21]],
[[ 17, 22]],
[[ 16, 23]],
[[ 16, 130]],
[[ 17, 131]],
[[ 17, 132]],
[[ 21, 132]],
[[ 43, 110]],
[[ 44, 110]],
[[ 75, 141]],
[[ 81, 141]],
[[109, 113]],
[[145, 149]],
[[149, 149]],
[[149, 21]],
[[148, 21]],
[[147, 20]]], dtype=int32)], array([[[-1, -1, -1, -1]]], dtype=int32))
【问题讨论】:
-
在这里稍微谨慎一点。轮廓是点的有序列表。如果您将它们全部加入一个列表中,那么您会破坏该顺序(您不能再在其上使用时刻或类似内容)。