2013-08-13 31 views
16

Czy istnieją jakieś pomocnicze metody rysowania obróconego prostokąta, które są zwracane przez cv2.minAreaRect() prawdopodobnie jako ((x1,y1),(x2,y2),angle)? cv2.rectangle() nie obsługuje kąta. A ponieważ zwrócona krotka nie należy do klasy "RotatedRect" (ponieważ wydaje się, że nie jest zaimplementowana w powiązaniach w Pythonie), nie ma metody points(), jak pokazano w C++ samouczku "Creating Bounding rotated boxes and ellipses for contours¶".OpenCV Python: Draw minAreaRect (RotatedRect nie zaimplementowano)

W jaki sposób można obrócić prostokąt z linii - obrócić wokół punktu środkowego lub pierwszego punktu?

Odpowiedz

34

Haha, ja właśnie miałem to samo pytanie i znaleźć następujące

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) 

To działa idealnie dla mnie.

+18

@ handle: Dodatkowe informacje dla przyszłych czytelników: Powyższa odpowiedź jest najlepsza z wersją OpenCV 2.4.x. OpenCV 3.x wkrótce zostanie wydany. Ma funkcję '' cv2.boxPoints (rect) '' dla tej samej. '' cv2.cv.BoxPoints (rect) '' zostanie wtedy usunięte. –