Get focal length of iOS devices

此生再无相见时 提交于 2020-06-13 07:01:21

问题


In Swift, is there an easy way to find the focal length of the currently using camera? I am working on an iOS application and I need to use the focal length (in pixels or in mm) of iOS cameras. I found documentation from Apple about the focal length, but there is no information about how to obtain it. Here are two places I have visited:

  • mdlcamera
  • coreimage

I have also checked this question but it doesn't seem to solve my problem. I know that the focal length can be calculated using the Field of View as follows:

focal_length_pixels = (image_diagonal_pixels/2)/tan(FOV/2)

but again, there are no guides in computing that quantity.

Could you please help? Thanks.


回答1:


This function is for those who have the same problem like me before. Basically, we'll have to take a picture, then use the captured picture to detect the focal length:

    // 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)")
    }



回答2:


I don't think there is any API function for the focal length of avfoundation. instead, you can get other info like lens aperture, dimensions, megapixel by calculating resolution, the field of view in degrees.

camera.lensAperture

camera.activeFormat.videoFieldOfView

camera.activeFormat.formatDescription
{
    let dimensions=CMVideoFormatDescriptionGetDimensions(formatdescription)
}



回答3:


You can use MDLCamera class. First you have to import the class.

import ModelIO

Then use it like below

print("focal length: \(MDLCamera().focalLength)")

Btw you can put it in AppDelegate class.



来源:https://stackoverflow.com/questions/46869211/get-focal-length-of-ios-devices

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!