Ich bin in einem interessanten Fehler mit Opencv 2.4.3 auf Python 2.7.3 unter Windows. Beim Versuch, drawContours zu verwenden, erhalte ich einen "TypeError: Konturen Datentyp = 5 wird nicht unterstützt" -Fehler, wenn ich die Konturen zuerst einlege/abnehme.Datentyp Fehler mit DrawContours, es sei denn, ich pickel/unpickle zuerst
Dies funktioniert nicht (ich bekommen "Typeerror: Konturen Datentyp = 5 wird nicht unterstützt"):
noBg = cv2.blur(src, (5,5))
noBg = cv2.inRange(noBg, np.array([80, 0, 200], np.uint8), np.array([255, 50, 255], np.uint8))
noBg = np.invert(noBg)
contours, hierarchy = cv2.findContours(noBg, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(src, contours, -1, (0,255,0), 3)
Aber das funktioniert:
noBg = cv2.blur(src, (5,5))
noBg = cv2.inRange(noBg, np.array([80, 0, 200], np.uint8), np.array([255, 50, 255], np.uint8))
noBg = np.invert(noBg)
contours, hierarchy = cv2.findContours(noBg, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
tmp = cPickle.dumps(contours)
contours = cPickle.loads(tmp)
cv2.drawContours(src, contours, -1, (0,255,0), 3)
Hat jemand gesehen Dieses Verhalten oder vermisse ich etwas Offensichtliches? Ich bin neu bei Python/Opencv, so dass es sehr wohl der Fall sein kann.
Edit: Ich habe dies nur auf meinem Mac getestet, und beide Fälle funktionieren gut. Vielleicht nur ein Windows-Problem?
Haben Sie eigentlich, wenn der Beize Prozess geprüft endet Ihre Konturen Datentyp zu ändern ? Sie sollten etwas mehr Code schreiben, um zu testen, wie die Daten durch Pickle/Unpickle modifiziert werden. – AJMansfield
Wenn ich drucke, sehen die Daten vor und nach dem Beizen gleich aus. Gibt es einen besseren Weg für mich, die beiden zu vergleichen? Ich stimme zu, dass etwas anders sein muss. –
@ user1816939 Ich habe wirklich keine Ahnung, wie Sie einen besseren Vergleich machen würden. Vielleicht indem man den Wert aller Mitglieder der Objekte durchgeht und nur den Wert ausdruckt? Obwohl das mehr Code schreiben müsste, als es sollte ... Vielleicht kann ein Debugger das machen? – AJMansfield