目标:寻找铁轨的交叉点,并画出来
作者:Jenny
思路
1.图像处理
垂直方向 进行卷积处理
再对图像进行二值化处理
进行霍夫变换(可以提取圆、线段等形状)
2.数学运算
霍夫变换提取的线段
求得交叉点
代码
import cv2
import numpy as np
import math
def calc_line(x1, y1, x2, y2):
"""
计算每个线段上的坐标
:param x1:
:param y1:
:param x2:
:param y2:
:return: 坐标
"""
# 计算斜率和偏值
k = float(y2 - y1) / float(x2 - x1)
b = float(y1) - float(x1) * k
points = []
for x in range(x1, x2 + 1):
y = int(k * x + b)
points.append((x, y))
return points
def cross_pint(line1, line2):
"""
处理线段
:param line1:线段1
:param line2:线段2
:return:
"""
point_is = False
x,y=0,0
#
x1, y1, x2, y2 = line1
x3, y3, x4, y4 = line2
print(x1, y1, x2, y2)
print(x3, y3, x4, y4