日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenMV测距

發(fā)布時間:2024/1/1 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenMV测距 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

測距

OpenMV采用的是單目攝像頭,想要實現(xiàn)測距,就需要選參照物,利用參照物的大小比例來計算距離。

本節(jié)分享一下第二種方法,如何通過攝像頭里乒乓球的大小,計算攝像頭與乒乓球之間的距離。
眾所周知,乒乓球距離攝像頭越遠,攝像頭里乒乓球的大小就越小,那么問題來了?
這個關系到底是什么呢?
(注:此處的數(shù)學幾何問題,僅涉及到高中數(shù)學三角函數(shù)部分,不想看的,直接看結論也可)
為了簡化問題,我們看一下圖:

由左邊的攝像頭里的幾何關系可得知:

所以有(1式)

由右邊的真實環(huán)境里的幾何關系得知:

帶入(1式),可得(結論公式):

上面就是最終我們想知道的關系啦!
這是什么意思呢?
等號左邊的Lm是長度,Bpix是攝像頭中,球所占的像素(直徑的像素)。等號右邊呢,Rm是球真實的半徑,Apix是是固定的像素,a是視角的一半。
所以!所以!所以!所以!所以!所以!所以!
這個公式告訴我們的就是:
實際長度和攝像頭里的像素成反比
簡化就是
距離 = 一個常數(shù)/直徑的像素
好啦,我們已經(jīng)知道關系啦,而且還是這么的優(yōu)雅簡單!
具體操作步驟呢,就是先測出這個常數(shù)的值,怎么測不用說了吧,就是先讓球距離攝像頭10cm,打印出攝像頭里直徑的像素值,然后相乘,就得到了k的值!
然后 距離=這個常數(shù)/攝像頭里像素點,so easy.
我這里貼出OpenMV的代碼:
#Measure the distance
#
#This example shows off how to measure the distance through the size in imgage
#This example in particular looks for yellow pingpong ball.

import sensor, image, time

#For color tracking to work really well you should ideally be in a very, very,
#very, controlled enviroment where the lighting is constant…

yellow_threshold = ( 56, 83, 5, 57, 63, 80)
#You may need to tweak the above settings for tracking green things…
#Select an area in the Framebuffer to copy the color settings.

sensor.reset() # Initialize the camera sensor.
sensor.set_pixformat(sensor.RGB565) # use RGB565.
sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
sensor.skip_frames(10) # Let new settings take affect.
sensor.set_auto_whitebal(False) # turn this off.
clock = time.clock() # Tracks FPS.
K=5
000#the value should be measured

while(True):
clock.tick() # Track elapsed milliseconds between snapshots().
img = sensor.snapshot() # Take a picture and return the image.

blobs = img.find_blobs([yellow_threshold]) if len(blobs) == 1:# Draw a rect around the blob.b = blobs[0]img.draw_rectangle(b[0:4]) # rectimg.draw_cross(b[5], b[6]) # cx, cyLm = (b[2]+b[3])/2length = K/Lmprint(length)#print(clock.fps()) # Note: Your OpenMV Cam runs about half as fast while # connected to your computer. The FPS should increase once disconnected.

成果是這樣的,通過串口把距離打印出來。

總結

以上是生活随笔為你收集整理的OpenMV测距的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。