ios - 如何在没有 ARKit 的情况下测量 iPhone 拍摄的照片中物体的大小?

标签 ios opencv

我们将使用美国四分之一硬币作为我们的引用对象并贯穿所有示例

we’ll be using the United States quarter as our reference object and throughout all examples

我需要确定我们的“每公制像素”比率,它描述了可以“适合”给定数量的英寸、毫米、米等的像素数。

我需要输出如下所示:

I need output should look something like the following:

最佳答案

你可以在这个 blog 上找到代码找到对象的大小。

每个指标的像素数 -

它被定义为每个公制(mm、cm、mtr)的像素数。首先,您需要为单个对象找到此比率(在您的情况下为 US Quarter )。然后,您将使用此比率来查找其他对象的大小。现在根据您的情况查找每个指标的像素 -

1) 过滤图像并找到轮廓。
2) 从左到右对等高线进行排序
3)找到第一个Contour(美四分之一)的角
4) 以像素为单位求出物体任意两个相邻角之间的距离
5) pixelspermetric = Distance_between_corners_in_pixels/Distance_between_corners_in_cm

例如

假设 US Quarter 两个相邻角之间的距离为 200 像素,硬币的实际宽度为 0.955 英寸。所以,

PixelsPerMetric = 200/0.955 = 209.4240

现在您可以找到其他对象的大小 -
大小 = length_in_pixels/PixelsPerMetric

对于一定的高度(物体和相机之间的距离),该比率保持不变。如果高度发生变化,则需要重新计算比率。

关于ios - 如何在没有 ARKit 的情况下测量 iPhone 拍摄的照片中物体的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51511966/

相关文章:

c++ - OpenCv:如何将 Mat::Rect 保存到文件中?

ios - swift 4 : How to redraw route if user change the direction in Google map ios

iphone - 钥匙串(keychain)访问中找不到公钥和私钥

python - 2 个 ArUco 标记平面之间的角度

python - 尝试使用 CV2 从网络摄像头捕获视频时出错

c# - OpenCV:基本矩阵和 SolvePnPRansac 的投影矩阵完全不同

iphone - MBHUD进度条加ASIHTTPRequest用于跟踪下载

ios - 向下滚动时,UICollectionView 中的图像会自动翻转吗?

ios - 如何 "visualize"(观察)iOS 中退出的线程?

c++ - 使用不带第二个参数的 imread 打开图像时,颜色模式是什么? BGR 还是 RGB?