2013-05-20 42 views
1

我有一個大小爲(10x10x1000的數組,我想將其拆分爲1000 arrays of 10x10。所以我使用cv2.split()函數。但它不起作用。cv2.split()不能工作超過512個通道

因此,經過仔細研究,我發現cv2.split()不適用於具有多於512個通道的的數組。

見下文:

In [101]: j = np.arange(3*3*512).reshape((3,3,512)); k = cv2.split(j); print len(k) 
512 

In [102]: j = np.arange(3*3*513).reshape((3,3,513)); k = cv2.split(j); print len(k) 
1 

這裏有什麼問題嗎?這是一個錯誤,還是還有其他事情要做嗎?還有其他更好的方法可以有效地做到這一點嗎?

回答

0

打開CV定義與可變CV_CN_MAX信道的最大數量。

「可能的最大通道數由CV_CN_MAX常量定義,該常數當前設置爲512.」您可以閱讀here

+0

這是不好的..任何方式,謝謝。 –

1

你可以使用numpy.split代替:

>>> k = np.split(j, j.shape[-1], -1) 

看來工作:

>>> print len(k) 
513 
+0

謝謝。我已經瞭解了'np.dsplit'這一點。任何想法與cv2.split()函數有什麼問題? –

+0

+1 - 尋求幫助.. –