![f72ab13e5ff1e26c0cc2f685d19e3376.png](https://i-blog.csdnimg.cn/blog_migrate/c11aa2326d69bd089e104f8c82fd6ce4.jpeg)
原文链接:
Find distance from camera to object using Python and OpenCVwww.pyimagesearch.com![f26cd37944b19784bd306e03f052ffd0.png](https://i-blog.csdnimg.cn/blog_migrate/6f65ce2994e5136df646cd7bd86d3513.jpeg)
摄像头测距就是计算照片中的目标物体到相机的距离。可以使用相似三角形(triangle similarity)方法实现,或者使用更复杂但更准确的相机模型的内参来实现这个功能。
使用相似三角形计算物体到相机的距离
假设物体的宽度为 W,将其放到离相机距离为 D 的位置,然后对物体进行拍照。在照片上量出物体的像素宽度 P,于是可以得出计算相机焦距 F 的公式:
比如我在相机前 24 英寸距离(D=24 inches)的位置横着放了一张 8.5 x 11 英寸(W=11 inches)的纸,拍照后通过图像处理得出照片上纸的像素宽度 P=248 pixels。
所以焦距 F 等于:
此时移动相机离物体更近或者更远,我们可以应用相似三角形得到计算物体到相机的距离的公式:
原理大概就是这样,接下来使用 OpenCV 来实现。
获取目标轮廓
# import the necessary packages
from imutils import paths
import numpy as np
import im