飛思卡爾運動小車前方道路識別

2021-08-04 22:08:13 字數 2380 閱讀 1770

基於openmv平台進行開發

特別注意:

1.適用於直線行駛過程中

2.保證前方沒有障礙物

(障礙物識別正在開發過程中)

演算法原理:

1.影象hough變換獲取直線

2.判斷道路

獲取影象結果:

識別道路結果:

(存在時間誤差)

程式**:

import

sensor,

image,

time

sensor.reset()
sensor.set_pixformat(sensor.rgb565)
sensor.set_framesize(sensor.qqvga)
clock

=time.clock()

k0

=0

b0

=0

k1

=0

b1

=0

while(true):
clock.tick()
img

=sensor.snapshot()

lines

=img.find_lines(threshold

=1000,

theta_margin

=25,

rho_margin

=25)

fori

inrange(0,len(lines)-

1):

forj

inrange(i+

1,len(lines)):

ax1

=lines[i].x1()

ay1

=lines[i].y1()

ax2

=lines[i].x2()

ay2

=lines[i].y2()

if(ax1

==ax2):

ax1

=ax1

+0.01

k0

=(ay2

-ay1)/(ax2

-ax1)

#第一條直線斜率

b0

=ay1-k0

*ax1

#第一條直線截距

bx1

=lines[j].x1()

by1

=lines[j].y1()

bx2

=lines[j].x2()

by2

=lines[j].y2()

if(bx1

==bx2):

bx1

=bx1

+0.01

k1

=(by2

-by1)/(bx2

-bx1)

#第二條直線斜率

b1

=by1-k1

*bx1

#第二條直線截距

fori

inrange(0,img.height()):

forj

inrange(0,img.width()):

ifk0

*j+b0

<=i

andk1

*j+b1

<=i:

img.set_pixel(j,i,(255,

255,

255))

else:

img.set_pixel(j,i,(0,

0,0))

forl

inlines:

img.draw_line(l.line(),

color

=(255,

0,255))

print("fps

%f"%

clock.fps())

飛思卡爾智慧型小車計時器

智慧型小車之旅依然在繼續。實驗室非常簡陋。卻有乙個比較大的賽道。除此之外比較寒酸。想到要為小車做乙個計時系統。心血來潮。花一天時間學習51微控制器。一天時間設計100秒4位數碼管計時裝置。最後拼湊了乙個象模像樣的光電開關。終於把小車計時系統給弄起來了。為實驗室新增一工具。說什麼也是花了兩天時間沒日沒...

飛思卡爾 熟悉小車之 舵機篇

今天重新回到科創中心,開始飛思卡爾的旅程 但直到我今天開啟飛思卡爾小車例程 我不禁感慨,要學的還是蠻多的,跟入門根本是兩回事,或許可以說根本搭不上。我的任務是負責軟體這一塊,核心是影象處理,但是跟著學習了解小車的各個方面還是很有必要的,接下來我將用部落格記錄我在未來半年裡的點點滴滴 哦,我也帶著將我...

飛思卡爾ATD模組

s12xs系列mcu的atd模組有27個暫存器,六個轉換控制暫存器,兩個轉換狀態暫存器,乙個比較使能暫存器,乙個比較方式暫存器和16個轉換結果暫存器,附上一段例程 void atd init void 一般常用到的也就是這段例程中用到的幾個暫存器。include include derivative...