Mor*_*rin 1 iphone camera qr-code augmented-reality ios
我的iOS应用程序应该同时执行以下两个任务:
换句话说:我正在寻找被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];
Run Code Online (Sandbox Code Playgroud)
现在,你可以像这样使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |