2014-02-10 2 views
1

Привета Я пытаюсь простое обнаружением каскадных людей, и я хочу использовать cv2.groupRectangles(), но всякий раз, когда я использую его он выходит из строя:GroupRectangles OpenCV не работает

** OpenCV Error: Assertion невыполненного (каналы () == CV_MAT_CN (DTYPE)) в неизвестной функции, файл ...... \ SRC \ OpenCV \ Modules \ ядро ​​\ SRC \ copy.cpp, строка 212

Это приложение просил Runtime прекратить это необычно. Для получения дополнительной информации обратитесь в службу поддержки приложения. * *

мой код:

rects = cascade.detectMultiScale(img, scaleFactor=1.05, minNeighbors=3, minSize=(minSize, minSize), maxSize=(maxSize, maxSize), flags=cv.CV_HAAR_DO_CANNY_PRUNING) 
    #print rects 
    rectList, weights = cv2.groupRectangles(rects, 1, 0.2) 
    if len(rects) == 0: 
      return [] 
    rects[:,2:] += rects[:,:2] 
    return rects 

Все работало отлично до groupRectangles использования.

ответ

1

Вы можете попытаться преобразовать прямоугольникам из numpy.array в список.

rectList, weights = cv2.groupRectangles(np.array(rects).tolist(), 1, 0.2) 

Это сработало для меня.

+0

Это работает, но я уже умирал правильно сформированный список groupRectangles и он терпит неудачу. Когда я печатаю список и копирую/вставляю его непосредственно в функцию, он также работает. Поэтому я предполагаю, что есть более простое решение ... – JxAxMxIxN

0

Простым решением является Убедитесь, что все значения в каждом прямоугольнике являются целыми числами.

Для визуального сравнения, список должен быть отформатирован как:

[[int, int, int, int], [int ,int ,int ,int], ...] 

Насколько я могу сказать, каждый тип целого числа должно работать, но NumPy в моем случае любит, чтобы преобразовать в int32, который прекрасно работает, но int16 может быть лучше, чтобы сэкономить место - вы решите, что вам нужно ...

Int16 Целое число (-32768 до +32767)

int32 Integer (-2147483648 до 2147483647)

int64 Integer (-9223372036854775808 до 9223372036854775807)

https://docs.scipy.org/doc/numpy/user/basics.types.html

Смежные вопросы