機器視覺 角點檢測演算法

2021-08-04 16:42:00 字數 2420 閱讀 7064

基於openmv硬體平台

識別原理:

1.尋找直線

2.計算相交直線的交點座標

3.判斷直線是否垂直

實驗效果:

實驗**:

import

sensor,

image,

time

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

=time.clock()

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

#第二條直線截距

if(k0

==k1):

k0=k0

+0.1

#計算角點座標

intersectionx

=(b1

-b0)/(k0

-k1)

intersectiony=k0

*intersectionx

+b0

img.draw_cross(int(intersectionx),

int(intersectiony),color

=(0,

255,

0))

#判斷是否垂直

kk

=float(k0)

*float(k1)

if(kk

>

-1.3

andkk

<

-0.7

):

img.draw_circle(int(intersectionx),

int(intersectiony),10,color

=(255,

0,0))

forl

inlines:

img.draw_line(l.line(),

color

=(255,

0,255))

print("fps

%f"%

clock.fps())

susan角點檢測演算法

susan演算法是1997年牛津大學的smith等人提出的一種處理灰度影象的方法,它主要是用來計算影象中的角點特徵。susan演算法選用圓形模板 如圖1所示 將位於圓形視窗模板中心等待檢測的畫素點稱為核心點。核心點的鄰域被劃分為兩個區域 亮度值相似於核心點亮度的區域即核值相似區 univalue s...

Shi Tomasi角點檢測演算法

1 shi tomasi概念 2 api 3 code 1 角點檢測除了harris角點檢測演算法外,還常常使用shi tomasi演算法,shi tomasi演算法是harris演算法的改進,因此計算速度更快,shi tomasi演算法於1994年在文章 good features to trac...

OpenCV Shi Tomasi角點檢測演算法

shi tomasi運算元是1994年在文章 good features to track 中被提出的,opencv實現此演算法的函式就被命名為goodfeaturestotrack。shi tomasi運算元 cv mat basicalgorithm on shi tomasi cv mat m...