gpt4 book ai didi

ios - 如何更改前置摄像头的曝光?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:56 24 4
gpt4 key购买 nike

经过反复试验,我发现 iPhone 6 及以下机型的前置摄像头不支持点击对焦。但是有没有办法改变曝光?我试过下面的代码,但没有任何反应。后置摄像头用这种方法对焦很好,但是当我切换到前置摄像头时没有任何反应。 (我使用的是定制相机)。

如有任何帮助,我们将不胜感激!

- (void) focusAtPoint:(CGPoint)point

{
AVCaptureDevice *device = [deviceInput device];

NSArray * inputs = session.inputs;
for (AVCaptureDeviceInput * INPUT in inputs) {
AVCaptureDevice * Device = INPUT.device ;
if ([ Device hasMediaType:AVMediaTypeVideo ]) {
AVCaptureDevicePosition position = Device.position;


if (position == AVCaptureDevicePositionFront)
{
//code for setting exposure
if ([device isExposureModeSupported:AVCaptureExposureModeContinuousAutoExposure]) {
NSError *error;

[device lockForConfiguration:&error];

CGPoint exposurePoint = point;
[device setExposurePointOfInterest:exposurePoint];
[device setExposureMode:AVCaptureExposureModeContinuousAutoExposure];
[device unlockForConfiguration];
}

}
else if(position == AVCaptureDevicePositionBack)
{
//code for focusing
}

}
}
}

最佳答案

它可以帮助你。

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.y / frameSize.height
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.devices().first as? AVCaptureDevice

let captureDevice = (AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) as! [AVCaptureDevice]).filter{$0.position == .Front}.first

if let device = captureDevice {
do {
try device.lockForConfiguration()

let focusSupport:Bool = device.focusPointOfInterestSupported
let exposureSupport:Bool = device.exposurePointOfInterestSupported

print(" AVCaptureFocusMode.AutoFocus: \(device.isFocusModeSupported(AVCaptureFocusMode.AutoFocus))")
print(" AVCaptureFocusMode.ContinuousAutoFocus: \(device.isFocusModeSupported(AVCaptureFocusMode.ContinuousAutoFocus))")
print(" AVCaptureFocusMode.Locked: \(device.isFocusModeSupported(AVCaptureFocusMode.Locked))")

print(" AVCaptureExposureMode.AutoExpose: \(device.isExposureModeSupported(AVCaptureExposureMode.AutoExpose))")
print(" AVCaptureExposureMode.ContinuousAutoExposure: \(device.isExposureModeSupported(AVCaptureExposureMode.ContinuousAutoExposure))")
print(" AVCaptureExposureMode.Locked: \(device.isExposureModeSupported(AVCaptureExposureMode.Locked))")


if focusSupport {

print("focusPointOfInterestSupported: \(focusSupport)")

device.focusPointOfInterest = focusPoint

// device.focusMode = .ContinuousAutoFocus
device.focusMode = .AutoFocus
// device.focusMode = .Locked


print("Focus point was set successfully")
}
else{
print("focusPointOfInterestSupported is not supported: \(focusSupport)")
}


if exposureSupport {

print("exposurePointOfInterestSupported: \(exposureSupport)")

device.exposurePointOfInterest = focusPoint

device.exposureMode = AVCaptureExposureMode.ContinuousAutoExposure

print("Exposure point was set successfully")
}
else{
print("exposurePointOfInterestSupported is not supported: \(exposureSupport)")
}

device.unlockForConfiguration()

}
catch {
// just ignore
print("Focus point error")
}
}

关于ios - 如何更改前置摄像头的曝光?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32298450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com