【问题标题】:How to find out focal length of camera in ios and what is the sensor height?如何在ios中找出相机的焦距以及传感器高度是多少?
【发布时间】:2012-11-02 07:15:47
【问题描述】:

我到处寻找相机的焦距和背面传感器的高度。 但我没有得到任何具体细节。

我正在开发一个应用程序,它将根据从 ios 相机捕获的图像中可见的高度计算现实世界对象的实际高度。

到物体的距离 (mm) =

焦距(mm)*物体的实际高度(mm)*图像高度(像素)--------------------------- ------------------------------------------------
物体高度(像素)* 传感器高度(mm)

在这里,我将到对象的距离值设为静态,图像高度以像素为单位。现在我需要焦距和传感器高度来找出真实物体的高度。

提前致谢。 布斯卡尼亚

【问题讨论】:

  • 这是一个非常有趣的问题!从那以后你有什么进展吗?
  • 不,我没有找到任何解决方案。但是我改变了找出物距的方法。
  • 你能在这里分享你的答案吗?顺便说一句,您可以将其形成为对这个问题的自我接受的答案。
  • +1,你找到解决办法了吗?
  • 是的,我已将其发布在下面作为答案。

标签: ios


【解决方案1】:

EXIF 标头

iOS 设备在 JPEG EXIF 标头中提供相机的焦距值。它在 iPhoto 和几乎任何其他工具中都可见。

以编程方式检索它的选项

EXIF 标头键列表可以在CGImageProperties Reference 中找到。

NSURL *imageFileURL = [NSURL fileURLWithPath:...];
CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)imageFileURL, NULL);
if (imageSource == NULL) {
    // Error loading image
    ...
    return;
}

NSDictionary *options = @{kCGImageSourceShouldCache, @NO};
CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, (CFDictionaryRef)options);
if (imageProperties) {
    NSNumber *width = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);
    NSNumber *height = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
    NSLog(@"Image dimensions: %@ x %@ px", width, height);
    CFRelease(imageProperties);
}
CFRelease(imageSource);

【讨论】:

  • CGImageSourceRef 无疑是从图像中获取元数据字典的一个地方。 CGImageSourceCopyPropertiesAtIndex 是具体的函数调用。
【解决方案2】:

解决这个问题的方法。

首先取一个真实世界的物体及其尺寸,即高度和宽度。(可乐杖示例) 现在拍下您要测量的对象。 对于 iphone 或 ipad,焦距固定为 25mm。 现在快速构图您要测量的对象,并根据您要测量的对象重新调整现实世界的可乐杖图像的大小。

使用等式

object_distance = (focal * real_object_height)/object_height;

这里,real_object_height = 可乐高度; 和 object_height = 可乐手调整高度

并相应地使用方程式测量物体的高度

height_of_frame = ((obj_distance) * measure_object_height_in_mm / 1000.0))/focal;

width_of_frame = ((obj_distance) * measure_object_width_in_mm / 1000.0))/focal;

通过这种方式,您可以找出物距及其测量值。 但是您需要两个静态数据,即您正在使用的相机的焦距和一个真实世界的对象测量值来比较。

谢谢, 博斯卡尼亚。

【讨论】:

  • 我们可以测量图像中任何物体的高度和宽度吗?我们没有找到像距离等这样的地方
  • 是的,我们可以找到。但是对于那个镜头焦点和一个相对的物体高度和宽度应该是已知的因素。此公式的工作应用程序itunes.apple.com/us/app/fishweight/id785343148?mt=8
  • @BSKANIA real_object_height 和 object_height 传递到像素、厘米或英寸等格式。什么是measured_object_height_in_mm?
  • @BSKANIA 这对于不同类型的设备是否可以重现?还是针对特定的一组设备?在我看来,它不适用于 Android 手机、Android 平板电脑、iphone 和 ipad 等不同的设备。你有什么看法?
猜你喜欢
  • 1970-01-01
  • 2020-10-18
  • 2020-04-11
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多