开发者社区> 问答> 正文

ios怎么样实现用摄像头测距,测距原理是什么?

要实现用摄像头进行测距,可以预输入物体的高度,然后在屏幕中卡出物体成像的高度,最后在屏幕上显示出距离。有没有人知道怎么弄呢,目前我知道设备的焦距和分辨率,不知道这样对测量距离有什么帮助呢?

展开
收起
杨冬芳 2016-06-28 19:17:16 13990 0
1 条回答
写回答
取消 提交回答
  • IT从业

    你们图样图森破让一让,我告诉你们答案:
    需要的光学公式:

    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手机都多个摄像头就这个原理。

    2019-07-17 19:48:42
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载