我正在创建一个锁定相机焦点以进行视频录制的应用程序。我想锁定焦点到无穷远而无需用户手动调整焦点。这可能吗?谢谢!有没有办法以编程方式将iOS设备上的相机对焦设置为无穷?
回答
这是禁用焦点的方式,将锁定它所有的时间:
// Find a suitable capture device
AVCaptureDevice *cameraDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// SETUP FOCUS MODE
if ([cameraDevice lockForConfiguration:nil]) {
[cameraDevice setFocusMode:AVCaptureFocusModeLocked];
[cameraDevice unlockForConfiguration];
}
else{
NSLog(@"error while configuring focusMode");
}
你是什么意思“锁定对焦到无穷大”?
锁定焦点无限远=锁定焦点到最远点可能 – jsrivo
这是一个有效的答案? – VansFannel
不幸的是,没有。正如Artem所说,您可以将相机设置为对焦锁定模式;进入自动对焦模式(对焦,然后锁定)或连续自动对焦模式,但无法为相机提供特定的距离以进行对焦。
我已经能够提出的最好的(用于曝光和白平衡控制,它们同样受到限制)是让用户将相机指向适当的场景(在你的情况下,远离某些事物)和让他/她按下锁定按钮。在捕获设备API
这是一个有效的答案? – VansFannel
有效答案?这是我发现的唯一途径。您可以将相机的焦点设置为“锁定”或“解锁”,您可以将其指定为“现在聚焦并锁定”(有关具体信息,请参阅https://developer.apple.com/library/mac/#documentation/ AVFoundation /参考/ AVCaptureDevice_Class /参考/的reference.html)。你不能告诉相机*注意什么*,只有*当*进行对焦时。所以我唯一可以想到的将焦点锁定到无限远的方法是让用户将相机的焦点瞄准非常远的地方,然后将其锁定。如果你能找到更好的方法,请告诉我们! –
另一个问题:至少在曝光度和白平衡的情况下,锁的状态在应用程序的调用中被记住,但锁定的值不是。如果我的应用程序退出活动状态,然后再次变为活动状态,则摄像机会锁定当前所看到的任何值,*不*以前的值:即使*状态*被记住,*值*也会丢失。如果焦点的行为方式相同,那么取决于焦点锁定的应用程序在背景时应将其关闭以避免无效值(我关闭了我的applicationWillResignActive:处理程序中的摄像头锁定,这似乎涵盖了所有情况)。 –
AVCaptureDevice具有功能setFocusModeLockedWithLensPosition:completionHandler:
你可以用它来设置,以1.0来实现 “无限” 距离
func focusTo(value : Float) {
if let device = captureDevice {
if(device.lockForConfiguration(nil)) {
device.setFocusModeLockedWithLensPosition(value, completionHandler: { (time) -> Void in
//
})
device.unlockForConfiguration()
}
}
更新: 根据苹果公司的文档,1.0并不代表重点在无限。
做这个工作? –
[链接](https://developer.apple.com/documentation/avfoundation/avcapturedevice/1624643-lensposition) 可能的位置范围是0.0到1.0,其中0.0是镜头可以聚焦的最短距离和1.0最远的。请注意,1.0不代表无限远处的焦点。默认值是1.0。 对我而言它有效 – EdiZ
- 1. 有没有办法以编程方式将ApartmentState设置为STA?
- 2. Python/Sqlite3 - 有没有办法以编程方式设置.nullvalue?
- 3. 有没有办法让我的WCF设置以编程方式设置?
- 4. 有没有办法为Android设备设置初始方向
- 5. 有没有办法检查iCloud备份是否为iOS设备设置?
- 6. 有没有办法以编程方式root/unroot一个android设备?
- 7. 有没有办法以编程方式取消注册推送通知设备?
- 8. 有没有办法在嵌入式jetty中以编程方式设置context-params?
- 9. 有没有办法将相机快速设置为横向模式?
- 10. 如何在iOS中以编程方式设置设备方向
- 11. 有没有办法以编程方式检测SET IDENTITY_INSERT xyz ON/OFF设置?
- 12. 有没有办法以编程方式启动Windows“设置麦克风”
- 13. 有没有办法在Android设备上以编程方式执行出厂重置?
- 14. 有没有办法通过编程方式在BlackBerry上设置numlock?
- 15. 以编程方式设置对象的框架没有效果
- 16. 有没有办法以编程方式配置MDBs?
- 17. 有没有办法在(slimdx,dx9)中重置设备而不处理所有与设备相关的对象?
- 18. 以编程方式为应用程序设置播放设备
- 19. 有没有什么办法以编程方式设置Windows Phone设置(如屏幕亮度)?
- 20. 有没有办法在IIS 6上以编程方式在虚拟目录的子目录上设置HttpExpires?
- 21. 有没有办法以编程方式在ios上安排事件?
- 22. 有没有办法通过编程禁用android设备?
- 23. 以编程方式配置Android设备
- 24. 有没有办法以编程方式检查ASP.NET应用程序的CustomErrors是否设置为Off?
- 25. 有没有什么办法可以在Mobile Safari for iOS设备上使用window.onbeforeunload?
- 26. 以编程方式在设备上设置动画android
- 27. 如何以编程方式将CDC模式下的Android USB设置为设备?
- 28. 无法以编程方式设置键盘类型 - ios
- 29. 有没有办法在设备上开发android应用程序?
- 30. 如何以编程方式在iOS中为全部设备设置UIView?
你有没有找到办法做到这一点? – VansFannel