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

时间:2016-09-02 19:54:21

标签: python-2.7 opencv

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

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

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

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

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

3 个答案:

答案 0 :(得分:1)

假设你有:

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]

在此处查看此工作:http://ideone.com/gWnhQ5

答案 1 :(得分:0)

来自OpenCV文档:

  

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

所以你可以通过以下方式访问x坐标:

contour[:,0]

答案 2 :(得分:0)

我遇到了同样的问题,并使用以下代码解决了该问题:

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

您可以打印flatten(1)的结果并进行检查。