2013-10-02 58 views
0

我对Python/opencv有点新,我有点困惑。我想我的问题与opencv无关,只是python。所以,我会解释它没有OpenCV的东西: 我有一个3昏暗的列表:蟒蛇和结合多维列表(opencv)

for contour in contours: 
    contour = cv2.approxPolyDP(contour,10,True) 
    print "--------------------------" 
    print contour 
    print "--------------------------" 

,我得到这样的:

-------------------------- 
[[[168 377]] 

[[250 404]]] 
-------------------------- 
-------------------------- 
[[[332 153]] 

[[419 216]]] 
-------------------------- 

但是,我真的希望是这样的:

-------------------------- 
[[[168 377]] 

[[250 404]] 

[[332 153]] 

[[419 216]]] 
-------------------------- 

当我建立由OY列表中拥有自己的工作也,它的方式768,16:

>>> np.array([[[168,377],[250,404],[332,153],[419,216]]]) 
array([[[168, 377], 
     [250, 404], 
     [332, 153], 
     [419, 216]]]) 

我知道...尺寸是不一样的。我不知道为什么opencv可以处理这个问题!? (这些都是轮廓出来的cv2.findContours 任何人都知道如何重新排列该列表?或者这一个有用的文档。 感谢UND电贺:)

+0

他们numpy的数组,你可以看一下很多的,如果你有用的东西用numpy作为关键字或在numpy文档中搜索 –

回答

0
res = [] 
for contour in contours: 
    contour = cv2.approxPolyDP(contour,10,True) 
    print "--------------------------" 
    print contour 
    print "--------------------------" 
    res.append(contour) 
print np.vstack(res) 
+0

尽管张贴可能解决问题,但最好提供一些解释。他们可以帮助未来的读者。 – Harry

+0

谢谢Zaw!这解决了这个问题。但不幸的是不是我的“真正的”问题;) – derhelge

+0

要使用这个新的组合阵列作为连续的轮廓,你必须使用它作为'cv2.drawContours(drawing,[np.vstack(combined)],0,color,1)' – derhelge