Was bedeutet das python-interface zur opencv2.fillPoly wollen als input?

Ich versuche zum zeichnen eines Polygons mit der python-Schnittstelle zu opencv, cv2. Ich habe ein leeres Bild, nur eine 640 x 480-numpy array. Ich habe eine Liste von Polygonen (vier-Punkt-Quadraten), die ich zeichnen möchte, auf das Bild, aber ich kann nicht scheinen, um die formate richtig zu beauftragen, cv2, wo die Quadraten sein sollte, und ich bekomme immer diese Fehlermeldung:

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

Mein code besteht im wesentlichen aus den folgenden:

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()

wo meine Liste von rects in erwartet, hat die "Grenze" mit dem Wert, der eine Liste von (x,y) Punkte. Der code druckt:

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

Ich dachte mir, dass dies ist die Liste der Punkte für ein polygon, aber offenbar, die Liste hat einen ungültigen points.checkvector, was auch immer das ist. Eine google-Suche nach dem Fehler erwies sich nichts nützlich.

  • Ich habe versucht, sowohl die cv2.fillPoly und cv2.fillConvexPoly hier, und beide werfen die gleichen Fehler...
  • beachten Sie, openCV will 'uint8' für Bilder. Während ich schien in der Lage sein, um Weg mit 'int8' hier, es verursacht mir Probleme später...
InformationsquelleAutor DaveA | 2012-06-29
Schreibe einen Kommentar