我通过以下代码裁剪Zbar的扫描区域:
- (void)startScanning
{
NSLog(@"Scanning..");
reader = [AACZBarViewController new];
reader.readerDelegate=self;
reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait);
reader.showsZBarControls = NO;
CGFloat x,y,w,h;
x =0;
y =0.25;
w=1;
h=0.50;
reader.scanCrop = CGRectMake(x,y,w,h); //Crop scan region
reader.cameraOverlayView = [self myOverlay];
ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];
[self presentViewController:reader animated:YES completion:nil];
}
然而问题是该程序仍然使用整个屏幕区域来查找条形码 - 而不是中间的50%。我不认为问题是reader.scanCrop方法,但至于真正的罪魁祸首是什么,我无法理解。
编辑:
任何?
答案 0 :(得分:0)
我再次看了一下zbar文档并注意到它说摄像机上的x轴是垂直的 - 而不是水平的。现在我将阅读器设置为仅限肖像,但显然这不会以任何方式影响相机。我没有找到改变它的方法,但我确实设法裁剪到我想要的扫描区域。
解决方案: 如果你想要下面的扫描区域(x,y,w,h),那么你可以通过交换x和y以及宽度和高度来设置矩形,所以这样做(y,x,h,w)。它似乎没有准确地裁剪到边界框,但它足够接近我的目的。