У меня есть изображение, и в нем есть некоторые фигуры. Я обнаружил линии с использованием линий hough. Как определить, какие линии параллельны?Python openCV обнаруживает параллельные линии
ответ
Уравнение линии в декартовых координатах:
у = к * х + б
Две линии у = k1 * х + b1, у = к2 * х + b2 параллельны, если k1 = k2.
Итак, вам нужно рассчитать коэффициент k для каждой обнаруженной линии.
Чтобы однозначно определить уравнение линии вам нужно знать координаты двух точек , которые принадлежат к линии.
После того, как найденные строки с HoughLines (С ++):
vector<Vec2f> lines;
HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0);
вас есть векторные линии, в которой хранятся параметры (r, тета) обнаруженных линий в полярных координатах. Вы должны передать их в декартовых координатах:
Вот пример на C++:
for(size_t i = 0; i < lines.size(); i++)
{
float rho = lines[i][0], theta = lines[i][1];
Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b)); //the first point
pt1.y = cvRound(y0 + 1000*(a)); //the first point
pt2.x = cvRound(x0 - 1000*(-b)); //the second point
pt2.y = cvRound(y0 - 1000*(a)); //the second point
}
После получив эти две точки линии вы можете вычислить ее уравнение.
HoughLines возвращает свои результаты в полярных координатах. Поэтому просто проверьте второе значение для угла. Нет необходимости конвертировать в й, у
def findparallel(lines):
lines1 = []
for i in range(len(lines)):
for j in range(len(lines)):
if (i == j):continue
if (abs(lines[i][1] - lines[j][1]) == 0):
#You've found a parallel line!
lines1.append((i,j))
return lines1
- 1. строки, параллельные houghlines opencv + python
- 2. Opencv обнаруживает четырехугольник в Python
- 3. OpenCV обнаруживает границу изображения
- 4. Как сделать параллельные линии
- 5. Нарисуйте две параллельные линии
- 6. OpenCV MSER обнаруживает текстовые области - Python
- 7. Houghlines не обнаруживает всех строк opencv + python
- 8. opencv обнаруживает световую частоту
- 9. Смещение линии (параллельные линии) без точек возврата
- 10. OpenCV обнаруживает затемненный прямоугольник
- 11. OpenCV обнаруживает пересечение контуров
- 12. OpenCV обнаруживает ориентацию на iphone
- 13. счетные параллельные линии в круге
- 14. Как сделать параллельные линии чертежа
- 15. рисования Параллельные линии в C#
- 16. Android google maps Параллельные линии
- 17. Параллельные вычисления с использованием OpenCV
- 18. opencv и python - Обнаружение лазерной изогнутой линии
- 19. Python OpenCV HoughLinesP не удалось обнаружить линии
- 20. OpenCV обнаруживает квадрат со сложным фоном
- 21. OpenCV обнаруживает несколько экземпляров элемента
- 22. OpenCV HoughCircles не обнаруживает круги
- 23. OpenCV обнаруживает ориентиры лица (линия уха-подбородок)
- 24. OpenCV обнаружить пунктирные линии
- 25. Обнаружение линии OpenCV
- 26. Алгоритм установки линии OpenCV
- 27. Поиск лазерной линии opencv
- 28. Draw подобранной линии (OpenCV)
- 29. обнаруживая 2 линии OpenCV
- 30. cmake для OpenCV не обнаруживает jdk
Если это будет сделано в Python, как указано в тегах, вы можете использовать SciPy версию houghlines, которая обеспечивает выходную houghspace изображения: Смотрите здесь] (Http://scikit-image.org/docs/dev/auto_examples/plot_line_hough_transform.html). Затем вы можете перевернуть независимую ось (тета или «X») и зависимую ось (rho или «Y»), так что theta теперь является зависимой осью. После создания этого пространственного изображения Hough (чтобы получить наиболее интенсивные пятна (rho, theta), которые соответствуют наиболее вероятным линиям), вы можете поместить горизонтальную линию в данные: theta = constant (y = mx + b без уклона). – chase