【发布时间】:2017-08-22 01:49:28
【问题描述】:
对于我的应用程序,我正在尝试使用 OCR Tesseract 将图像转换为文本。我已经学会了如何截取整个 AVCaptureSession 的屏幕截图,但我只想捕获绿色方块的图像,以使 OCR Tesseract 更容易转换并获得更清晰的用户体验。
我已阅读文章(如下),但它只捕获视图而不是视图后面的 AVCaptureSession。
ios how to capture a particular portion of screen
这里是代码
@interface OCRScannerViewController ()
@property (strong, nonatomic) IBOutlet UIPinchGestureRecognizer *pinchGestureRecognizer;
@property (weak, nonatomic) IBOutlet UIView *cameraView;
@property (weak, nonatomic) IBOutlet VINCaptureView *captureView;
@property (weak, nonatomic) IBOutlet UIImageView *sampleImageView;
@end
@implementation OCRScannerViewController
- (void)viewDidLoad {
[super viewDidLoad];
//Start Session
//Capture Session
AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = AVCaptureSessionPresetPhoto;
//Add device
AVCaptureDevice *device =
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
//Input
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
if (!input)
{
NSLog(@"No Input");
}
[session addInput:input];
//Output
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[session addOutput:output];
output.videoSettings =
@{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
//Preview Layer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
previewLayer.frame = self.cameraView.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[previewLayer.connection setVideoOrientation:AVCaptureVideoOrientationLandscapeLeft];
//Place Camera View behind all subviews
[self.view.layer insertSublayer:previewLayer atIndex:0];
//Start capture session
[session startRunning];
}
- (UIImage *)takeSnapshotOfView:(UIView *)view
{
UIGraphicsBeginImageContext(CGSizeMake(view.frame.size.width, view.frame.size.height));
[view drawViewHierarchyInRect:CGRectMake(0, 0, view.frame.size.width, view.frame.size.height) afterScreenUpdates:NO];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
【问题讨论】: