8

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

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

到物体的距离 (mm) =

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

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

提前致谢。布斯卡尼亚

4

2 回答 2

4

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);
于 2014-12-16T12:12:02.840 回答
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;

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

谢谢,bskania。

于 2013-01-03T04:40:09.957 回答