cv2.split()不能超过512个通道

时间:2013-05-20 15:59:38

标签: opencv numpy

我有一个大小为(10x10x1000的数组,我想将其拆分为1000 arrays of 10x10。所以我使用了cv2.split()函数。但它不起作用。

因此,仔细研究后,我发现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

这里有什么问题?它是一个错误还是还有什么可以使其工作?还有其他更好的方法可以有效地做到这一点吗?

2 个答案:

答案 0 :(得分:1)

您可以改为使用numpy.split

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

似乎有效:

>>> print len(k)
513

答案 1 :(得分:0)

Open CV使用变量CV_CN_MAX定义最大通道数。

“最大可能通道数由CV_CN_MAX常量定义,当前设置为512。”您可以阅读here