恩智浦智能车摄像头循迹部分
生活随笔
收集整理的這篇文章主要介紹了
恩智浦智能车摄像头循迹部分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
恩智浦智能車攝像頭循跡部分
對于恩智浦智能車競賽已經舉行了14屆,從以往的電磁車已經逐漸轉變成了用攝像頭進行循跡。與電磁循跡對比,攝像頭擁有著諸多優勢,但攝像頭對于很多新手入門來說卻是比較困難的。下面將給新手介紹我們對攝像頭循跡部分的處理。大家都知道,單片機從攝像頭采集到數據后,必須對圖像進行相應的二值化(即0,1)后才方便對圖像進行處理。在得到二值化圖像后如何進行處理并且進行巡線呢? 一獲取中線 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]); } 獲取中線的原理在于圖像的中線下方往兩邊進行找黑線,找到黑線后進行記錄。并且兩邊的黑線到中點的距離進行作差,即可得到對應該橫的中點值,依次往上進行尋找中線,最后把所有中點與中線的誤差積累在minder變量中即可得到車子里中線的偏差。 但這樣獲得中線的方式存在一個問題:當車模快在過彎時攝像頭拍攝的位置將不會是賽道的方向,拍攝的位置可能為賽道的外側,那么計算中線的位置將會出現問題。因此我們需要引入一個結束點,在查找中線時檢測到巡線位置已經到達邊緣時暫停結束巡線詳細代碼如圖 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;}具體的比例系數需要大家對自己的車模進行一一的調整。
總結
以上是生活随笔為你收集整理的恩智浦智能车摄像头循迹部分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现多文档文本编辑器
- 下一篇: 游戏开发流程-微信小游戏(含源码)