我的iOS應用兩個庫應該是在同一時間完成下列兩項任務:訪問iPhone的攝像頭,在一個應用程序
- 掃描使用zbar和SDK QR代碼,
- 掃描用於增強現實使用QCAR SDK的標記。
或者換句話說:我在尋找通過AR標記包圍QR標籤。
這兩個任務應該「實時」運行。我的第一個幼稚的方法表明,在一個應用程序中組合兩個SDK將導致初始化的SDK在第二個SDK初始化時停止工作。
有人有建議嗎?謝謝。
我的iOS應用兩個庫應該是在同一時間完成下列兩項任務:訪問iPhone的攝像頭,在一個應用程序
或者換句話說:我在尋找通過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);
}
}
非常高興看到這可以做到。 – Randall