Я новичок в opencv (в C ++), и я пытаюсь реализовать обнаружение строк.
У меня есть картинка с парой линий, и я пытаюсь определить расстояние между линиями. Я знаю, что есть Hough, Canny и так далее, но как я могу получить координаты различных линий, чтобы вычислить расстояние между линиями? Должен ли я использовать контурные функции opencv или есть лучшие способы? Мне не нужны полные примеры кода, но кто-нибудь может сказать мне лучший способ сделать работу?
Обнаружение линий часто приводит к использованию преобразования Хафа, детектора контуров Кэнни и обнаружения контуров только в качестве удобных препроцессоров, если это необходимо.
Если у вас есть параллельные линии, использование
void HoughLines(InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn=0, double stn=0 )
для обнаружения строк, где второй параметр будет содержать обнаружение:
линии — выходной вектор линий. Каждая строка представлена
двухэлементный вектор (ρ, θ). ρ — расстояние от координаты
origin (0, 0) (верхний левый угол изображения). θ — поворот линии
угол в радианах (0 ∼ вертикальная линия, π / 2 ∼ горизонтальная линия).
[Opencv2refman.pdf]
Это означает, что расстояние между двумя линиями должно быть abs(rho1-rho2)
что расстояния представляют собой абсолютные различия между значениями пикселей в первом столбце lines
, (Примечание: метод должен быть CV_HOUGH_STANDARD
Вот!)
За непараллельные линии Вы должны определить то, что вы считаете расстоянием, но тогда OpenCV может по-прежнему предоставлять вам координаты конечных точек каждой обнаруженной линии.
Вы просто должны использовать method = CV_HOUGH_PROBABILISTIC
,
CV_HOUGH_PROBABILISTIC вероятностное преобразование Хафа (более эффективное
в случае, если изображение содержит несколько длинных линейных сегментов). Это
возвращает сегменты линии, а не всю линию. Каждый сегмент
представлены начальными и конечными точками, а матрица должна быть
созданная последовательность будет) типа CV_32SC4.
[Opencv2refman.pdf]
Вы также можете найти учебник в opencv_tutorials.pdf
в документации вашего установленного OpenCV.
Других решений пока нет …