2015-12-23 41 views
0

我想使用ZBar庫(zbar.sourceforge.net)和opencv找到QR碼。Zbar沒有找到代碼

這裏是我的代碼:

string findIDIncircle(Mat img, double* angle) 
{ 
    ImageScanner scanner; 
    zbar_image_scanner_set_config(scanner, ZBAR_NONE, ZBAR_CFG_ENABLE, 1); 
    int width = img.cols; 
    int height = img.rows; 
    uchar *raw = (uchar *)img.data; 
    Image image(width, height, "Y800", raw, width * height); 
    scanner.scan(image); 
    SymbolSet symbols = image.get_symbols(); 
    for(Image::SymbolIterator symbol = image.symbol_begin(); symbol != image.symbol_end(); symbol++) 
    { 
     string data = symbol->get_data(); 
     vector<Point> vp; 
     int n = symbol->get_location_size(); 
     for(int i=0;i<n;i++) 
     { 
     vp.push_back(Point(symbol->get_location_x(i),symbol->get_location_y(i))); 
     } 
     RotatedRect r = minAreaRect(vp); 
     *angle = r.angle; 
     return data; 
    } 
    return ""; 
} 

但代碼沒有找到任何東西。我檢查了img上的imwrite參數,圖像是正確的,非常清晰(它是用http://www.qrcode-generator.de/生成的) 任何人都可以告訴我,問題在哪裏?

回答

0

好吧,我解決了它自己,只好將其轉換爲灰度:

Mat gray; 
cvtColor(img,gray,CV_BGR2GRAY); 
uchar *raw = (uchar *)gray.data;