Estoy tratando de dibujar un polígono utilizando la interfaz de python para opencv, cv2. Creé una imagen vacía, solo una matriz numpy de 640x480. Tengo una lista de polígonos (cuadriláteros de cuatro puntos) que quiero dibujar en la imagen, sin embargo, parece que no puedo obtener el formato correcto para instruir cv2 donde deberían estar los cuadriláteros, y sigo obteniendo este error:¿Qué quiere la interfaz de python para opencv2.fillPoly como entrada?
OpenCV Error: Assertion failed (points.checkVector(2, CV_32S) >= 0) in fillConvexPoly, file .../OpenCV-2.4.0/modules/core/src/drawing.cpp, line 2017
mi código consiste esencialmente las siguientes:
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()
donde mi lista de rectas en espera tiene el 'límite' que contiene el valor de una lista de (x, y) puntos. La impresora de código:
[[ 91 233]
[419 227]
[410 324]
[ 94 349]]
que pensé que esta es la lista de puntos de un polígono, pero al parecer esa lista tiene un inválido points.checkvector
, cualquiera que sea. Una búsqueda en google de ese error no arrojó nada útil.
He intentado tanto cv2.fillPoly y cv2.fillConvexPoly aquí, y ambos lanzan el mismo error ... – DaveA
nota, OPENCV quiere 'uint8' para imágenes. Si bien parecía que podía salir con 'int8' aquí, me causó problemas más tarde ... – DaveA