Detekcja linii prowadzi często do korzystania z transformacji Hough, detektor krawędzi Canny i wykrywanie obrysu działają w miarę potrzeby jako wygodne procesory wstępne.
Jeśli masz równoległe linie, użyj
void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0)
dla linii wykrywających gdzie drugi parametr będzie zawierać wykrywania:
linii - wyjście wektor linii. Każda linia jest reprezentowana przez dwuelementowy wektor (ρ, θ). ρ jest odległością od współrzędnych początku (0, 0) (lewy górny róg obrazu). θ to kąt obrotu kąt w radianach (0 ~ linia pionowa, linia pozioma π/2 ~).
[opencv2refman.pdf]
Oznacza to, że odległość między dwie linie powinny być abs(rho1-rho2)
, że odległości są bezwzględnych różnic między wartościami pikseli z pierwszej kolumny lines
. (Uwaga: metoda powinna być CV_HOUGH_STANDARD
tutaj!)
Dla nierównoległych liniach trzeba określić, co myślisz, jak daleka, ale potem OpenCV nadal może dostarczyć ze współrzędnymi punktów końcowych każdego wykrytego linii.
Po prostu trzeba użyć method = CV_HOUGH_PROBABILISTIC
.
CV_HOUGH_PROBABILISTIC probabilistyczny Hough transformacji (bardziej wydajny w przypadku, gdy obraz zawiera kilka długich segmentów liniowych). To zwraca segmenty linii zamiast całej linii. Każdy segment to reprezentowany przez punkty początkowe i końcowe, a macierz musi być (utworzona sekwencja utworzona) o typie CV_32SC4.
[opencv2refman.pdf]
Można również znaleźć tutorial w opencv_tutorials.pdf
w dokumentacji zainstalowanego OpenCV.
Nie musisz dodawać podpisu do swojego posta - Twoja karta użytkownika zostanie dodana automatycznie. – Artemix