You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
|
|
|
|
# 车胎横向分界线
|
|
|
|
|
k = 0.62849534
|
|
|
|
|
b = 21.8122503
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
读取yolo网络识别路沿的坐标数据,筛选出目标区域的数据点,并将路沿上下侧数据分离
|
|
|
|
|
参数:保存数据的txt文件路径
|
|
|
|
|
返回值:在目标区域内的下侧数据点坐标x_bot、y_bot,上侧数据点坐标x_top,y_top
|
|
|
|
|
"""
|
|
|
|
|
def get_data(txt_name):
|
|
|
|
|
with open(txt_name, 'r', encoding='utf-8') as f:
|
|
|
|
|
lines = f.readlines()
|
|
|
|
|
data = []
|
|
|
|
|
for i, line in enumerate(lines, 1):
|
|
|
|
|
data.append(line.split())
|
|
|
|
|
# print(line.split())
|
|
|
|
|
x_bot = []
|
|
|
|
|
y_bot = []
|
|
|
|
|
x_top = []
|
|
|
|
|
y_top = []
|
|
|
|
|
k_num = 0
|
|
|
|
|
for i in range(len(data)):
|
|
|
|
|
data[i][1] = 960 - int(data[i][1])
|
|
|
|
|
for i in range(len(data)):
|
|
|
|
|
# if k * int(data[i][0]) + b - int(data[i][1]) < 0:
|
|
|
|
|
# continue
|
|
|
|
|
if i > 1:
|
|
|
|
|
if (int(data[i][0]) - int(data[i-1][0]))*(int(data[i+2][0]) - int(data[i][0]))<0:
|
|
|
|
|
k_num = i
|
|
|
|
|
break;
|
|
|
|
|
for i in range(len(data)):
|
|
|
|
|
if k * int(data[i][0]) + b - int(data[i][1]) < 0:
|
|
|
|
|
continue
|
|
|
|
|
if i < k_num:
|
|
|
|
|
x_bot.append(int(data[i][0]))
|
|
|
|
|
y_bot.append(int(data[i][1]))
|
|
|
|
|
else:
|
|
|
|
|
x_top.append(int(data[i][0]))
|
|
|
|
|
y_top.append(int(data[i][1]))
|
|
|
|
|
# print(x_bot, y_bot, x_top, y_top)
|
|
|
|
|
return x_bot, y_bot, x_top, y_top
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|