在Swift中,有没有一种简单的方法可以找到当前使用相机的焦距? 我正在开发iOS应用程序,我需要使用iOS摄像头的焦距(以像素或毫米为单位)。我找到了Apple关于焦距的文档,但没有关于如何获取它的信息。这是我去过的两个地方:
我还检查了this question,但它似乎无法解决我的问题。 我知道可以使用视野计算焦距,如下所示:
focal_length_pixels = (image_diagonal_pixels/2)/tan(FOV/2)
但同样,没有计算数量的指南。
你可以帮忙吗? 感谢。答案 0 :(得分:0)
此功能适用于那些像我之前一样有类似问题的人。基本上,我们必须拍照,然后使用拍摄的图片来检测焦距:
// delegate method for the image picker
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let metadata = info[UIImagePickerControllerMediaMetadata] as? NSDictionary
let exifdata = metadata!["{Exif}"] as! NSDictionary
// focal length
let focalLength = exifdata["FocalLength"] as! Double
print("Focal length \(focalLength)")
}
答案 1 :(得分:0)
我不认为affoundation的焦距没有任何API函数。 相反,您可以通过计算分辨率和以度为单位的视场来获取其他信息,例如镜头光圈,尺寸,百万像素。
camera.lensAperture
camera.activeFormat.videoFieldOfView
camera.activeFormat.formatDescription
{
let dimensions=CMVideoFormatDescriptionGetDimensions(formatdescription)
}
答案 2 :(得分:-1)
您可以使用MDLCamera类。首先,你必须导入该类。
import ModelIO
然后像下面那样使用
print("focal length: \(MDLCamera().focalLength)")
顺便说一句,你可以把它放在AppDelegate类中。