恩智浦智能车摄像头循迹部分
生活随笔
收集整理的這篇文章主要介紹了
恩智浦智能车摄像头循迹部分
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
恩智浦智能車(chē)攝像頭循跡部分
對(duì)于恩智浦智能車(chē)競(jìng)賽已經(jīng)舉行了14屆,從以往的電磁車(chē)已經(jīng)逐漸轉(zhuǎn)變成了用攝像頭進(jìn)行循跡。與電磁循跡對(duì)比,攝像頭擁有著諸多優(yōu)勢(shì),但攝像頭對(duì)于很多新手入門(mén)來(lái)說(shuō)卻是比較困難的。下面將給新手介紹我們對(duì)攝像頭循跡部分的處理。大家都知道,單片機(jī)從攝像頭采集到數(shù)據(jù)后,必須對(duì)圖像進(jìn)行相應(yīng)的二值化(即0,1)后才方便對(duì)圖像進(jìn)行處理。在得到二值化圖像后如何進(jìn)行處理并且進(jìn)行巡線呢? 一獲取中線 for(j=MT9V032_H-5;j>20;j--){ for(i = 0 ;i <=MT9V032_W/2;i++){if(i==MT9V032_W/2-2){ left=MT9V032_W/2;break;}if(img[j][MT9V032_W/2-i] <= 10 && img[j][MT9V032_W/2-i-1] <= 10){ left = i;break;} }for(i = 0 ;i < MT9V032_W/2;i++){ if(i==MT9V032_W/2-2){ right=MT9V032_W/2;break;}if(img[j][MT9V032_W/2+i] <= 10 && img[j][MT9V032_W/2+1+i] <= 10){ right = i;break;} }if(j<30)midder[j]=MT9V032_W/2-(left-right)*1.5;elsemidder[j]=MT9V032_W/2-(left-right);minder=minder+(MT9V032_W/2-midder[j]); } 獲取中線的原理在于圖像的中線下方往兩邊進(jìn)行找黑線,找到黑線后進(jìn)行記錄。并且兩邊的黑線到中點(diǎn)的距離進(jìn)行作差,即可得到對(duì)應(yīng)該橫的中點(diǎn)值,依次往上進(jìn)行尋找中線,最后把所有中點(diǎn)與中線的誤差積累在minder變量中即可得到車(chē)子里中線的偏差。 但這樣獲得中線的方式存在一個(gè)問(wèn)題:當(dāng)車(chē)??煸谶^(guò)彎時(shí)攝像頭拍攝的位置將不會(huì)是賽道的方向,拍攝的位置可能為賽道的外側(cè),那么計(jì)算中線的位置將會(huì)出現(xiàn)問(wèn)題。因此我們需要引入一個(gè)結(jié)束點(diǎn),在查找中線時(shí)檢測(cè)到巡線位置已經(jīng)到達(dá)邊緣時(shí)暫停結(jié)束巡線詳細(xì)代碼如圖 if(midder[j]<10||midder[j]>MT9V032_W-10||j<21){if(j>60)minder=minder*j*3.4;elseminder=minder*j*0.03;if(minder>2000)minder=2000;if(minder<-2000)minder=-2000;break;}具體的比例系數(shù)需要大家對(duì)自己的車(chē)模進(jìn)行一一的調(diào)整。
總結(jié)
以上是生活随笔為你收集整理的恩智浦智能车摄像头循迹部分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java实现多文档文本编辑器
- 下一篇: 游戏开发流程-微信小游戏(含源码)