我使用openCV生成如下所示的轮廓:
array([[[227, 762]],
[[228, 762]],
[[229, 763]],
[[228, 764]],
[[229, 765]],
[[228, 766]],
[[227, 766]],
[[228, 766]],
[[229, 765]],
[[228, 764]],
[[229, 763]],
[[229, 762]]], dtype=int32)
此轮廓的类型为np.ndarray
当我检查cnt.shape时,我得到(12,1,2),表明这比简单的12 x 2矩阵更复杂。
这意味着当我尝试:
In [104]: new = np.array([1,2])
In [105]: type(new)
Out[105]: numpy.ndarray
In [106]: X = np.vstack((ex,new))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-106-5ceb3fcd9619> in <module>()
----> 1 X = np.vstack((ex,new))
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/shape_base.pyc in vstack(tup)
226
227 """
--> 228 return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
229
230 def hstack(tup):
ValueError: all the input arrays must have same number of dimensions
你可以看到new和ex都属于同一类型,我希望它们都有2列,因此我可以垂直堆叠它们,但是唉,不......我怎么能这样做?
答案 0 :(得分:1)
要将其转换为12x2,只需:
yourarray.reshape(12, 2)
这让我:
array([[227, 762],
[228, 762],
[229, 763],
[228, 764],
[229, 765],
[228, 766],
[227, 766],
[228, 766],
[229, 765],
[228, 764],
[229, 763],
[229, 762]])
我建议简要介绍numpy的array
方法 - 有很多潜在有用的东西。