Jay*_*Jay 5 python opencv numpy
以下是OpenCV返回的轮廓结构。它嵌套得很深,元组的第一个元素是轮廓中的点列表。
知道将其转换为二维点列表(nx 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))
Run Code Online (Sandbox Code Playgroud)
import numpy as np
contours, hierarchy = cv2.findContours(bw_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = np.vstack(contours).squeeze()
Run Code Online (Sandbox Code Playgroud)
请注意,cv2.findContours实际上返回2个项目。“轮廓”是一个列表。因此,我们使用numpy vstack()
将它们堆叠在一起,然后squeeze()
删除所有多余的轴。
归档时间: |
|
查看次数: |
4086 次 |
最近记录: |