访问iPhone相机与两个库在一个应用程序



我的iOS应用程序应该同时执行以下两个任务:

  1. 扫描QR标签使用ZBar SDK,
  2. 使用QCAR SDK扫描增强现实标记。

或者换句话说:我正在寻找被AR标记包围的QR标签。

两个任务都应该"实时"运行。我的第一个天真的方法表明,在一个应用程序中组合两个SDK将导致第一个初始化的SDK在第二个SDK初始化时停止工作。

有人有什么建议吗?谢谢。

我设法完成了。如果有人想知道:

QCAR仅适用于完整的摄像机访问。因此,必须按照文档中所示对其进行初始化和启动。幸运的是,它提供了对处理后的相机图像作为原始RGB数据的访问。我使用以下代码将原始数据转换为UIImage:

QCAR::setFrameFormat(QCAR::GRAYSCALE, true);
const QCAR::Image *image = state.getFrame().getImage(1); // 0: YUV, 1: Grayscale image
const char *data = (const char *)image->getPixels();
int width = image->getWidth(); int height = image->getHeight();
CGColorSpace *colorSpace = CGColorSpaceCreateDeviceGray();
CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault;
CGDataProvider *provider = CGDataProviderCreateWithData(NULL, data, width*height, NULL);
CGColorRenderingIntent intent = kCGRenderingIntentDefault;
CGImageRef imageRef = CGImageCreate(width, height, 8, 8, width * 1, colorSpace, bitmapInfo, provider, NULL, NO, intent);
myUIImage = [UIImage imageWithCGImage:imageRef];
现在,你可以像这样使用ZBar的ZBarImageScanner类:
ZBarImageScanner *imageScanner = [[ZBarImageScanner alloc] init];
ZBarImage *image = [[ZBarImage alloc] initWithCGImage:myUIImage.CGImage];
int result = [imageScanner scanImage:image];
if (result > 0) {
 ZBarSymbolSet *symbols = imageScanner.results;
 for(ZBarSymbol *symbol in symbols) {
  NSLog(@"%@", symbol.data);
 }
}

您一次只能运行一个摄像机会话,因此您需要弄清楚如何让ZBar和QCar使用相同的会话

相关内容

最新更新