@@ -95,7 +95,7 @@ - (void)initCapture
9595 self.device = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo];
9696
9797 if (@available (iOS 13.0 , *)) {
98- AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInUltraWideCamera ]
98+ AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInWideAngleCamera ]
9999 mediaType: AVMediaTypeVideo
100100 position: AVCaptureDevicePositionBack];
101101
@@ -226,6 +226,9 @@ - (void) onVideoStart: (NSNotification*) note
226226 if ([self .device lockForConfiguration: &error]) {
227227 if ([self .device isFocusModeSupported: AVCaptureFocusModeContinuousAutoFocus])
228228 self.device .focusMode = AVCaptureFocusModeContinuousAutoFocus;
229+
230+ if ([self .device isExposureModeSupported: AVCaptureExposureModeContinuousAutoExposure])
231+ self.device .exposureMode = AVCaptureExposureModeContinuousAutoExposure;
229232 }
230233}
231234
@@ -254,7 +257,7 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
254257 }
255258
256259 CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer (sampleBuffer);
257- CIImage *ciImage = [CIImage imageWithCVPixelBuffer: imageBuffer];
260+ CIImage *ciImage = [self adjust: [ CIImage imageWithCVPixelBuffer: imageBuffer] saturation: 1.0 shadow: 0.3 contrast: 1.2 brightness: 0.0 sharpnessLuminance: 2.0 ];
258261
259262 dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
260263 NSUserDefaults *settings = [NSUserDefaults standardUserDefaults ];
@@ -266,7 +269,6 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
266269 IDScanMRZDetector *mrzDetector = [IDScanMRZDetector detectorWithActivationKey: [settings objectForKey: @" scannerMRZKey" ]];
267270
268271 NSString *result = @" " ;
269-
270272 // detect based on scanner Type
271273 if ([scannerType isEqualToString: @" pdf" ]) {
272274 result = [pdfDetector detectFromImage: ciImage][@" string" ];
@@ -303,6 +305,46 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
303305 });
304306}
305307
308+ - (CIImage *)adjust : (CIImage *)ciImage
309+ saturation : (float )saturation
310+ shadow : (float )shadow
311+ contrast : (float )contrast
312+ brightness : (float )brightness
313+ sharpnessLuminance : (float )sharpnessLuminance
314+ {
315+ // saturation
316+ CIFilter *filter = [CIFilter filterWithName: @" CIColorControls" ];
317+ [filter setValue: ciImage forKey: kCIInputImageKey ];
318+ [filter setValue: [NSNumber numberWithFloat: saturation] forKey: kCIInputSaturationKey ];
319+ ciImage = [filter valueForKey: kCIOutputImageKey ];
320+
321+ // shadow
322+ CIFilter *shadowFilter = [CIFilter filterWithName: @" CIHighlightShadowAdjust" ];
323+ [shadowFilter setValue: ciImage forKey: kCIInputImageKey ];
324+ [shadowFilter setValue: [NSNumber numberWithFloat: shadow] forKey: @" inputShadowAmount" ];
325+ ciImage = [shadowFilter valueForKey: kCIOutputImageKey ];
326+
327+ // contrast
328+ CIFilter *contrastFilter = [CIFilter filterWithName: @" CIColorControls" ];
329+ [contrastFilter setValue: ciImage forKey: kCIInputImageKey ];
330+ [contrastFilter setValue: [NSNumber numberWithFloat: contrast] forKey: kCIInputContrastKey ];
331+ ciImage = [contrastFilter valueForKey: kCIOutputImageKey ];
332+
333+ // brightness
334+ CIFilter *brightnessFilter = [CIFilter filterWithName: @" CIColorControls" ];
335+ [brightnessFilter setValue: ciImage forKey: kCIInputImageKey ];
336+ [brightnessFilter setValue: [NSNumber numberWithFloat: brightness] forKey: kCIInputBrightnessKey ];
337+ ciImage = [brightnessFilter valueForKey: kCIOutputImageKey ];
338+
339+ // sharpnessLuminance
340+ CIFilter *sharpnessLuminanceFilter = [CIFilter filterWithName: @" CISharpenLuminance" ];
341+ [sharpnessLuminanceFilter setValue: ciImage forKey: kCIInputImageKey ];
342+ [sharpnessLuminanceFilter setValue: [NSNumber numberWithFloat: sharpnessLuminance] forKey: kCIInputSharpnessKey ];
343+ ciImage = [sharpnessLuminanceFilter valueForKey: kCIOutputImageKey ];
344+
345+ return ciImage;
346+ }
347+
306348#pragma mark -
307349#pragma mark Memory management
308350
0 commit comments