我搜索了每个地方以找到相机的焦距及其后传感器高度。 但我没有得到任何具体细节。
我正在开发一个应用程序,它将从ios相机拍摄的图像中可见的高度计算现实世界对象的实际高度。
与物体的距离(mm)=
焦距(mm)*物体的实际高度(mm)*图像高度(像素)--------------------------- ------------------------------------------------ <无线电通信/> 物体高度(像素)*传感器高度(mm)
这里我将对象的值距离设置为静态,图像高度以像素为单位。现在我需要焦距和传感器高度来找出真实的物体高度。
提前致谢。 bskania
答案 0 :(得分:4)
iOS设备在JPEG EXIF标题中提供相机的焦距值。它在iPhoto
和任何其他工具中都可见。
可以在CGImageProperties Reference。
中找到EXIF标题键列表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);
答案 1 :(得分:1)
解决此问题的方法。
首先拍摄一个真实物体及其尺寸,即高度和宽度。(焦炭手杖的例子) 现在快速捕捉要测量的对象。 对于iphone或ipad,焦距固定为25mm。 现在构建要在快照上测量的对象,并根据要测量的对象重新调整真实世界的焦炭图像大小。
使用等式
object_distance =(focal * real_object_height)/ object_height;
这里,real_object_height =焦炭高度; 和object_height =焦炭重新调整高度
并相应地使用等式
测量物体的高度height_of_frame =((obj_distance)* measured_object_height_in_mm / 1000.0))/ focal;
width_of_frame =((obj_distance)* measured_object_width_in_mm / 1000.0))/ focal;
通过这种方式,您可以找到物距和其尺寸。 但是你需要两个静态数据,即你正在使用的相机的焦距和一个用于比较的真实世界对象。感谢, bskania。