2021-12-13 20:47:14 索煒達(dá)電子 803
文件編號(hào):A340
文件大?。?/strong>34M
開(kāi)發(fā)環(huán)境:Python3.6、OpenCV3.4.x
猿創(chuàng)承諾:該項(xiàng)目親測(cè)正常運(yùn)行,需遠(yuǎn)程調(diào)試部署需另外收費(fèi),確保正常使用,不能正常使用全額退款。
簡(jiǎn)要概述:帶轉(zhuǎn)向輔助和車道偏離監(jiān)控的車道檢測(cè), 本項(xiàng)目旨在演示車道檢測(cè)系統(tǒng)如何在配備前置攝像頭的汽車上工作。該系統(tǒng)在越來(lái)越多的車輛中占有一席之地,是自動(dòng)/半自動(dòng)車輛中使用的高級(jí)駕駛員輔助系統(tǒng)(ADAS)的重要組成部分。此功能負(fù)責(zé)檢測(cè)車道、測(cè)量曲線半徑(曲線的緊密度)并監(jiān)控從中心的偏移。有了這些信息,該系統(tǒng)通過(guò)確保車輛在車道線內(nèi)居中而顯著提高了安全性,并且如果還配置為控制方向盤(pán)在高速公路上無(wú)需任何駕駛員輸入的情況下緩慢轉(zhuǎn)彎,則可增加舒適性。這是用于生產(chǎn)車輛的簡(jiǎn)化版本,如果提供良好的條件(清晰的車道線、穩(wěn)定的光照條件),則功能最佳。在這個(gè)存儲(chǔ)庫(kù)中,它包含一個(gè)行車記錄儀鏡頭,供腳本使用。
確保兩個(gè)文件(laneDetection.py和drive.mp4)位于同一目錄中。
先決條件:
要成功運(yùn)行項(xiàng)目,需要安裝以下軟件及其各自的版本:
-Python 3.6 or higher
-OpenCV 3 or higher
-Numpy 1.14 or higher
-Scipy 1.1 or higher
工作原理:
laneDetection提供了一個(gè)包含汽車在公路上行駛的dashcam畫(huà)面的視頻文件。py按照模塊化的方法,Python腳本有幾個(gè)函數(shù)來(lái)執(zhí)行車道檢測(cè)。
圖像處理
readVideo()
首先是readVideo()函數(shù),用于訪問(wèn)視頻文件驅(qū)動(dòng)器。位于同一目錄中的mp4。
processImage()
此函數(shù)執(zhí)行一些處理技術(shù),以隔離白色車道線,并為后續(xù)函數(shù)的進(jìn)一步分析做好準(zhǔn)備?;旧?,它應(yīng)用HLS顏色過(guò)濾來(lái)過(guò)濾出幀中的白色,然后將其轉(zhuǎn)換為灰度,然后應(yīng)用閾值來(lái)去除除車道以外的不必要檢測(cè),變得模糊,最后使用cv2提取邊緣。Canny()函數(shù)。
perspectiveWarp()
現(xiàn)在我們有了我們想要的圖像,透視扭曲被應(yīng)用。在框架上放置4個(gè)點(diǎn),使其僅圍繞存在車道的區(qū)域(如圖所示),然后將其映射到另一個(gè)矩陣上,以創(chuàng)建對(duì)車道的鳥(niǎo)瞰。這將使我們能夠處理更精細(xì)的圖像,并幫助檢測(cè)車道曲率。應(yīng)注意,如果使用其他視頻,此操作可能會(huì)發(fā)生變化。預(yù)定義的4個(gè)點(diǎn)是根據(jù)這一特定的鏡頭計(jì)算的。如果另一個(gè)視頻的角度稍有不同,則應(yīng)重新調(diào)諧。
正在處理的幀的不同階段(左),鳥(niǎo)瞰視圖(右)
車道檢測(cè)、曲線擬合和計(jì)算
plotHistogram()
繪制圖像下半部分的直方圖是獲取左右車道確切起始位置信息的關(guān)鍵部分。在分析直方圖時(shí),可以看到在檢測(cè)到所有白色像素的地方有兩個(gè)不同的峰值。這是一個(gè)很好的指示器,指示左右車道的起始位置。由于直方圖x坐標(biāo)表示分析幀的x坐標(biāo),這意味著我們現(xiàn)在有x坐標(biāo)開(kāi)始搜索車道。
顯示白色像素峰值的直方圖
slide_window_search()
滑動(dòng)窗口方法用于檢測(cè)車道及其曲率。它使用上一個(gè)直方圖函數(shù)中的信息,并在中間放置一個(gè)帶有車道的框。然后根據(jù)上一個(gè)框中白色像素的位置將另一個(gè)框放在頂部,并將其自身相應(yīng)地一直放置到幀的頂部。這樣,我們就有了進(jìn)行一些計(jì)算的信息。然后,執(zhí)行二次多項(xiàng)式擬合以在像素空間中具有曲線擬合。
general_search()
在運(yùn)行slide_window_search()函數(shù)后,這個(gè)通用的_search()函數(shù)現(xiàn)在能夠填充檢測(cè)到的車道周圍的區(qū)域,再次應(yīng)用二次多邊形擬合,然后繪制一條黃線,該黃線與車道非常精確地重疊。這條線將用于測(cè)量曲率半徑,這對(duì)于預(yù)測(cè)轉(zhuǎn)向角至關(guān)重要。
measure_lane_curvature()
根據(jù)前兩個(gè)函數(shù)提供的信息,np。再次使用polyfit()函數(shù),但將值乘以xm_per_pix和ym_per_pix變量,將它們從像素空間轉(zhuǎn)換為米空間。xm_per_pix設(shè)置為3.7/720,車道寬度為3.7米,從直方圖中獲得的左右車道基準(zhǔn)x坐標(biāo)對(duì)應(yīng)于車道寬度(像素),結(jié)果約為720像素。類似地,由于幀高度為720,因此ym_per_pix被設(shè)置為30/720。
滑動(dòng)窗口搜索功能可視化(左),常規(guī)搜索功能可視化(右)
可視化與主要功能
draw_lane_lines()
從這里開(kāi)始,應(yīng)用一些方法來(lái)可視化檢測(cè)到的車道和其他信息,以便為最終圖像顯示。此特定功能采用檢測(cè)到的車道,并用綠色填充車道內(nèi)的區(qū)域。它還通過(guò)獲取左fitx和右fitx列表的平均值并將其存儲(chǔ)在pts_mean變量中(然后用淡黃色表示)來(lái)可視化車道中心。該變量還用于計(jì)算車輛到任意一側(cè)的偏移量或車輛在車道中心的偏移量。
offCenter()
函數(shù)使用pts_mean變量計(jì)算偏移值,并以米為單位顯示。
addText()
最后通過(guò)在最終圖像上添加文本將完成該過(guò)程并顯示信息。
main()
Main函數(shù)是按正確順序調(diào)用所有這些函數(shù)的地方,它包含播放視頻的循環(huán)。
定稿圖像
圖像處理階段
按需寫(xiě)作:
演示視頻:
點(diǎn)擊查看:系統(tǒng)演示視頻
運(yùn)行界面:
遠(yuǎn)程協(xié)助:
溫馨提示:索煒達(dá).猿創(chuàng)官方提供收費(fèi)遠(yuǎn)程協(xié)助,確保您項(xiàng)目運(yùn)行成功。
點(diǎn)擊查看:遠(yuǎn)程協(xié)助相關(guān)事項(xiàng)
我們提供完整項(xiàng)目文件清單如下:
文件目錄
├ 1.項(xiàng)目源碼
├ 2.運(yùn)行截圖
└ 3.演示視頻