2013-08-13 14 views
16

Esistono metodi di supporto per disegnare un rettangolo ruotato restituito da cv2.minAreaRect() presumibilmente come ((x1,y1),(x2,y2),angle)? cv2.rectangle() non supporta un angolo. E poiché la tupla restituita non è della classe "RotatedRect" (perché sembra non essere implementata nei binding Python) non esiste il metodo points(), come mostrato nell'esercitazione C++ "Creating Bounding rotated boxes and ellipses for contours¶".OpenCV Python: Draw minAreaRect (RotatedRect non implementato)

Come è possibile ricavare un rettangolo ruotato dalle linee: ruotare attorno al punto centrale o al primo punto indicato?

risposta

34

Haha, ho appena avuto la stessa domanda e ha trovato il seguente

http://opencvpython.blogspot.in/2012/06/contours-2-brotherhood.html

Python OpenCV Box2D

rect = cv2.minAreaRect(cnt) 
box = cv2.cv.BoxPoints(rect) # cv2.boxPoints(rect) for OpenCV 3.x 
box = np.int0(box) 
cv2.drawContours(im,[box],0,(0,0,255),2) 

Funziona perfettamente per me.

+18

@handle: informazioni aggiuntive per futuri lettori: la risposta sopra è la migliore opzione con la versione OpenCV 2.4.x. OpenCV 3.x sta per essere rilasciato presto. Ha una funzione '' cv2.boxPoints (rect) '' per lo stesso. '' cv2.cv.BoxPoints (rect) '' sarà rimosso allora. –