Sto provando a disegnare un poligono usando l'interfaccia python su opencv, cv2. Ho creato un'immagine vuota, solo un array numpy 640x480. Ho una lista di poligoni (quadrilateri a quattro punti) che voglio disegnare sull'immagine, tuttavia, non riesco a ottenere il formato giusto per istruire il cv2 dove dovrebbero essere i quadrilateri, e continuo a ricevere questo errore:Cosa vuole l'interfaccia python su opencv2.fillPoly come input?
OpenCV Error: Assertion failed (points.checkVector(2, CV_32S) >= 0) in fillConvexPoly, file .../OpenCV-2.4.0/modules/core/src/drawing.cpp, line 2017
il mio codice si compone di essenzialmente i seguenti:
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()
dove previsto mia lista di rettangoli ha il 'confine' che contiene il valore di un elenco di (x, y) punti. Le stampe di codice:
[[ 91 233]
[419 227]
[410 324]
[ 94 349]]
ho pensato che questo è l'elenco dei punti di un poligono, ma a quanto pare quella lista ha un invalido points.checkvector
, qualunque essa sia. Una ricerca su google per quell'errore non è risultata utile.
Ho provato sia cv2.fillPoly e cv2.fillConvexPoly qui, ed entrambi gettare lo stesso errore ... – DaveA
nota, OpenCV vuole 'uint8' per le immagini. Mentre sembravo in grado di scappare con 'int8' qui, mi ha causato problemi in seguito ... – DaveA