Что интерфейс python для opencv2.fillPoly хочет использовать в качестве входных данных?

Я пытаюсь нарисовать многоугольник, используя интерфейс python для opencv, cv2. Я создал пустой образ, просто массив 640x480 numpy. У меня есть список многоугольников (четырехугольников с четырьмя точками ), которые я хочу нарисовать на изображении, однако я не могу правильно форматировать, чтобы указать cv2, где должны быть четырехугольники, и я продолжаю получать это ошибка:

OpenCV Error: Assertion failed (points.checkVector(2, CV_32S) >= 0) in fillConvexPoly, file.../OpenCV-2.4.0/modules/core/src/drawing.cpp, line 2017

Мой код состоит по существу из следующего:

binary_image = np.zeros(image.shape,dtype='int8')
for rect in expected:
    print(np.array(rect['boundary']))
    cv2.fillConvexPoly(binary_image, np.array(rect['boundary']), 255)
fig = pyplot.figure(figsize=(16, 14))
ax = fig.add_subplot(111)
ax.imshow(binary_image)
pyplot.show()

где мой список ожидаемых прямоугольников имеет «границу», содержащую значение списка из (x, y )точек. Код печатает:

[[ 91 233]
 [419 227]
 [410 324]
 [ 94 349]]

Я понял, что это список точек для многоугольника, но, видимо, в этом списке есть недопустимый points.checkvector, что бы это ни было. Поиск этой ошибки в гугле ничего полезного не дал.

19
задан Alexis Pigeon 1 July 2012 в 00:33
поделиться