要实现用摄像头进行测距,可以预输入物体的高度,然后在屏幕中卡出物体成像的高度,最后在屏幕上显示出距离。有没有人知道怎么弄呢,目前我知道设备的焦距和分辨率,不知道这样对测量距离有什么帮助呢?
你们图样图森破让一让,我告诉你们答案:
需要的光学公式:
F1: 1/物距 + 1/像距 = 1/焦距
F2: 像高/像距 = 物高/物距
由上述F1、F2约掉像距,可代出:
F3:物距 = (1+物高/像高)*焦距
需要假定 iphone 6 plus 的特征和拍摄方向:
全画幅(36mmX24mm)等效焦距(根据我的经验假定)为30mm
iphone的感光视野就是屏幕的显示视野
竖拍
需要 iphone 6 plus 的屏幕像素 1920x1080 ,则得:
F4: 像高 = 36 * 像点数 / 1920 mm
则上述F4代入F3可得:
物距 = ( 1 + 物高 * 1920 / 36 / 像点数 ) * 30 mm
输入例:
哥我身高1720mm,在 6 plus 里竖拍出来的像素是555点
可以了,来跟着哥我算算 6plus 到哥的距离为:
(1+1720*1920/555/36)*30 mm = 4988.558558558 mm
高中课本学的,三角形,余弦的知识。知道一条边和一个角,算另外一条边假定camera里面的物件高度为height0, 实际的物件为height1,把camera里面的物件看成是实际物件的投影,你可以得到距离,不过这个height0,以及投影的三角形中有些参数是变化的,你把实际的数据代入,就可以得到大致的模型。但是如果说要精确的模型,估计需要了解下camera的参数和成像模型,iOS每一款手机的camera都有其参数,这些都是固定的。
如果成像模型如下图,height0 / S2 = height1 / S1,然后得到,S1 = height1 * S2 / height0,不过实际的成像模型应该比这个复杂,f就是focus length。
三角定位
大概要两个摄像头吧,3D手机都多个摄像头就这个原理。