ios 9 AVCaptureDevice设置焦点
ios 9 AVCaptureDevice setting focus point
我正在尝试使用前置摄像头设置焦点。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let screenSize = cameraView.bounds.size
let frameSize:CGSize = view.frame.size
if let touchPoint = touches.first {
var location:CGPoint = touchPoint.locationInView(cameraView)
print("Tap Location : X: \(location.x), Y: \(location.y)")
if cameraManager.cameraDevice == .Front {
print("Front camera is used")
location.x = frameSize.width - location.x;
}
else {
print("Back camera is used")
}
let x = location.x / frameSize.width
let y = 1.0 - (location.x / frameSize.width)
let focusPoint = CGPoint(x: x, y: y)
print("POINT : X: \(x), Y: \(y)")
let captureDevice = (AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) as! [AVCaptureDevice]).filter{[=11=].position == .Front}.first
if let device = captureDevice {
do {
try device.lockForConfiguration()
let support:Bool = device.focusPointOfInterestSupported
if support {
print("focusPointOfInterestSupported: \(support)")
device.focusPointOfInterest = focusPoint
// device.focusMode = .ContinuousAutoFocus
device.focusMode = .AutoFocus
// device.focusMode = .Locked
device.unlockForConfiguration()
print("Focus point was set successfully")
}
else{
print("focusPointOfInterestSupported is not supported: \(support)")
}
}
catch {
// just ignore
print("Focus point error")
}
}
}
}
它适用于 iphone6 的后置摄像头。但是,当我启动前置摄像头时,它出现了抖动。 focusPointOfInterestSupported 总是 returns false。
我该如何解决这个问题。我可以通过编程方式设置焦点吗?
谢谢!
focusPointOfInterestSupported
布尔值表示此设备的前置摄像头不支持以这种方式设置焦点。事实上,iPhone 6 的 "FaceTime" 相机似乎具有固定焦距。 iPhone 6 "FaceTime" 摄像头的技术规格部分没有提及 "focus",但在后置 "iSight" 摄像头部分有提及。此外,尝试将前置摄像头重新聚焦在靠近镜头的模糊物体上(通过在“相机”应用中点击)似乎只能调整曝光,而不能调整焦点。
我正在尝试使用前置摄像头设置焦点。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let screenSize = cameraView.bounds.size
let frameSize:CGSize = view.frame.size
if let touchPoint = touches.first {
var location:CGPoint = touchPoint.locationInView(cameraView)
print("Tap Location : X: \(location.x), Y: \(location.y)")
if cameraManager.cameraDevice == .Front {
print("Front camera is used")
location.x = frameSize.width - location.x;
}
else {
print("Back camera is used")
}
let x = location.x / frameSize.width
let y = 1.0 - (location.x / frameSize.width)
let focusPoint = CGPoint(x: x, y: y)
print("POINT : X: \(x), Y: \(y)")
let captureDevice = (AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) as! [AVCaptureDevice]).filter{[=11=].position == .Front}.first
if let device = captureDevice {
do {
try device.lockForConfiguration()
let support:Bool = device.focusPointOfInterestSupported
if support {
print("focusPointOfInterestSupported: \(support)")
device.focusPointOfInterest = focusPoint
// device.focusMode = .ContinuousAutoFocus
device.focusMode = .AutoFocus
// device.focusMode = .Locked
device.unlockForConfiguration()
print("Focus point was set successfully")
}
else{
print("focusPointOfInterestSupported is not supported: \(support)")
}
}
catch {
// just ignore
print("Focus point error")
}
}
}
}
它适用于 iphone6 的后置摄像头。但是,当我启动前置摄像头时,它出现了抖动。 focusPointOfInterestSupported 总是 returns false。
我该如何解决这个问题。我可以通过编程方式设置焦点吗?
谢谢!
focusPointOfInterestSupported
布尔值表示此设备的前置摄像头不支持以这种方式设置焦点。事实上,iPhone 6 的 "FaceTime" 相机似乎具有固定焦距。 iPhone 6 "FaceTime" 摄像头的技术规格部分没有提及 "focus",但在后置 "iSight" 摄像头部分有提及。此外,尝试将前置摄像头重新聚焦在靠近镜头的模糊物体上(通过在“相机”应用中点击)似乎只能调整曝光,而不能调整焦点。