2013-05-20 2 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

Open 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 - для справки .. –