Sto riscontrando un errore interessante con opencv 2.4.3 su python 2.7.3 su Windows. Quando si tenta di utilizzare drawContours, viene visualizzato un errore "TypeError: profilesurs type = 5 non supportato" a meno che non decapri/desimini prima i contorni.Errore di tipo di dati con drawContours a meno che non decapri prima/apri il primo
Questo non funziona (ho la "TypeError: tipo di dati contorni = 5 non è supportato"):
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)
Ma questo funziona:
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)
Qualcun altro ha visto questo comportamento o mi manca qualcosa di ovvio? Sono nuovo di Python/Opencv, quindi potrebbe essere il caso.
Modifica: Ho appena provato questo sul mio Mac, ed entrambi i casi funzionano bene. Forse solo un problema di Windows?
Hai controllato se il processo di salamoia finisce in realtà per cambiare il vostro contorni tipo di dati ? Dovresti scrivere un altro codice per testare come Pickle/Unpickle modifica effettivamente i dati. – AJMansfield
Se utilizzo la stampa, i dati appaiono identici prima e dopo il decapaggio. C'è un modo migliore per me per confrontare i due? Sono d'accordo che qualcosa deve essere diverso. –
@ user1816939 Non ho davvero idea di come si possa fare un confronto migliore. Forse passando e stampando il valore di tutti i membri degli oggetti? Anche se ciò implicherebbe scrivere più codice di quanto dovrebbe ... Forse una sorta di debugger può farlo? – AJMansfield