@@ -95,7 +95,7 @@ - (void)initCapture
95
95
self.device = [AVCaptureDevice defaultDeviceWithMediaType: AVMediaTypeVideo];
96
96
97
97
if (@available (iOS 13.0 , *)) {
98
- AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInUltraWideCamera ]
98
+ AVCaptureDeviceDiscoverySession *captureDeviceDiscoverySession = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInWideAngleCamera ]
99
99
mediaType: AVMediaTypeVideo
100
100
position: AVCaptureDevicePositionBack];
101
101
@@ -226,6 +226,9 @@ - (void) onVideoStart: (NSNotification*) note
226
226
if ([self .device lockForConfiguration: &error]) {
227
227
if ([self .device isFocusModeSupported: AVCaptureFocusModeContinuousAutoFocus])
228
228
self.device .focusMode = AVCaptureFocusModeContinuousAutoFocus;
229
+
230
+ if ([self .device isExposureModeSupported: AVCaptureExposureModeContinuousAutoExposure])
231
+ self.device .exposureMode = AVCaptureExposureModeContinuousAutoExposure;
229
232
}
230
233
}
231
234
@@ -254,7 +257,7 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
254
257
}
255
258
256
259
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 ];
258
261
259
262
dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
260
263
NSUserDefaults *settings = [NSUserDefaults standardUserDefaults ];
@@ -266,7 +269,6 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
266
269
IDScanMRZDetector *mrzDetector = [IDScanMRZDetector detectorWithActivationKey: [settings objectForKey: @" scannerMRZKey" ]];
267
270
268
271
NSString *result = @" " ;
269
-
270
272
// detect based on scanner Type
271
273
if ([scannerType isEqualToString: @" pdf" ]) {
272
274
result = [pdfDetector detectFromImage: ciImage][@" string" ];
@@ -303,6 +305,46 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput
303
305
});
304
306
}
305
307
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
+
306
348
#pragma mark -
307
349
#pragma mark Memory management
308
350
0 commit comments