# 如何找出車道線座標並畫出車道範圍

如果要畫出車道範圍,就需要找出車道線的每個點座標,並藉由這些座標畫出車道線,
而左右兩邊的車道線方程式係數在之前已經求得了,現在只需要把已知的 y軸 座標給
取出。
## 分割圖片的 y 軸
圖片的高度由 120 像素所組成,所以切分時是使用 0 ~ 119 的範圍去切成 120 等分,那為了簡化問題,以下將使用三等份來模擬真實情況。
也就是 0,1,2 被切分成三等份:
>匯入套件,並且設定 numpy 的顯示方式(方便觀察)
```python=
import numpy as np
np.set_printoptions(threshold=np.inf, linewidth=np.inf, precision=1, formatter={'float': '{:0.1f}'.format})
```
>模擬分割圖片的高
```python=
var_pts = np.linspace(0,2,3)
print(f'分割圖的高(y軸): {var_pts}')
```
輸出結果是每一個點的 y 座標,也就是 ( ? , 0.0 )、( ? , 1.0 )、( ? , 2.0 ),我們知道y座標後就可以根據方程式去推出 x 座標。

## 計算出每個點的 x 值
這裡使用的方程式也是簡易版的例子,具體方程式請看原始程式碼(由上一章算出來的)
```python=
# 左邊所有的 x 值 代入到左邊方程式
left_fitx = (1 * var_pts ** 2 +2 * var_pts + 3)
# 右邊所有的 x 值 代入到右邊方程式
right_fitx = (1.5 * var_pts ** 2 +2.5 * var_pts + 3.5)
print(f'左邊 x 座標: {left_fitx}')
print(f'右邊 x 座標: {right_fitx}')
```
輸出結果

有了 x 座標後就可以跟剛才的 y 座標做對應了,如此一來即可獲得所有點的座標。
## 取得所有座標
```python=
pts_left = np.transpose(np.vstack([left_fitx, var_pts])) # 將對應的 x,y依序排列
pts_right = np.transpose(np.vstack([right_fitx, var_pts])) # 將對應的 x,y依序排列 並翻轉
print(f'左邊所有座標:\n {pts_left}')
print(f'右邊所有座標:\n {pts_right}')
```
輸出結果

取得每一個座標後就可以沿著座標去畫線,最後框出軌道範圍,由左邊第一個座標開始畫到左邊最後一個座標,但是在畫到這裡時發現下一個點是右邊線的第一個點,這樣就會呈現倒N字形,我們應該畫的下一個點是右邊線的最後一個點,也就是[14.5,2.0],然後再由此點上去到第一個點,最後就可以把整個軌道給框起來了!
## 重直堆疊兩邊的座標
```python=
pts_right = np.flipud(pts_right) # 將對應的 x,y依序排列並翻轉
pts = np.vstack((pts_left, pts_right)) # 垂直堆疊
print(f'所有座標:\n{pts}')
```
輸出結果
