Jak znaleźć rogi obiektu Rect w openCV?

Korzystam z biblioteki openCV na platformie Android. Z powodzeniem wykryłem największy prostokąt z obrazu, ale ponieważ moja aplikacja będzie używana do celów skanowania, chcę mieć również funkcję zmiany perspektywy.

Wiem, jak zastosować perspectiveTransform i warpPerspectiveTransform, ale do tego potrzebuję narożników prostokąta dla punktów źródłowych.

Wydaje się bardzo łatwe do znalezienia narożników, biorąc pod uwagę fakt, że mamy współrzędne pierwszego rogu (górny lewy) i szerokość / wysokość związane z obiektem Rect, ale problem dotyczy, dla obróconego prostokąta (zwykły prostokąt ograniczający, ale boki nie są równoległe do oś), wartości te są bardzo różne. W tym przypadku przechowuje wartości odpowiadające innemu prostokątowi posiadającemu boki równoległe do osi i pokrywając obrócony prostokąt, dzięki czemu nie mogę wykryć narożników rzeczywistego prostokąta.

Chcę także porównać te dwa algorytmy do wykrywania arkusza z obrazu.

Canny edge -> Największy kontur -> największy prostokąt -> znajdź narożniki -> zmiana perspektywy

Canny edge-> Hough lines -> przecięcie linii -> zmiana perspektywy

Rzecz, którą chcę zadać, jest podana, jeśli mamy obiekt Rect, jak zdobyć wszystkie rogi tego prostokąta?

Z góry dziękuję.

questionAnswers(2)

yourAnswerToTheQuestion