从Python中的OpenCV轮廓中获取坐标列表



我正在寻找一种方法来检索由OpenCV生成的轮廓坐标列表。

例如,如果我有一个OpenCV轮廓:

cnt = [[[272 271]] 
       [[271 272]]
       [[270 272]]
       [[269 272]]
       [[268 272]]]

如何创建轮廓线x坐标列表:

x = [273, 271, 270, 269, 268]

假设有:

cnt = []
cnt.append([[272, 271]])
cnt.append([[271, 272]])
cnt.append([[270, 272]])
cnt.append([[269, 272]])
cnt.append([[268, 272]])
然后,要获得包含X值的列表,您可以使用:
xList = [x[0][0] for x in cnt] # --> [272, 271, 270, 269, 268]

来自OpenCV文档:

contours是图像中所有轮廓的Python列表。每一个单个轮廓是由(x,y)坐标组成的Numpy数组…

所以你可以使用:

来访问x坐标
contour[:,0]

我有同样的问题,我用下面的代码解决了它:

x_waypoints = (x_y_array.flatten(1)[:length_of_contours2])
y_waypoints = (x_y_array.flatten(1)[length_of_contours2:])

可以打印flatten(1)的结果,并检查。

最新更新