2015-12-23 5 views
0

Я пытаюсь найти QR-код с использованием библиотеки ZBar (zbar.sourceforge.net) и opencv.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 ""; 
} 

Но код не находит ничего. Я проверил аргумент, используя imwrite на img, и изображение правильное и очень четкое (оно было сгенерировано с помощью http://www.qrcode-generator.de/) может ли кто-нибудь сказать мне, где проблема?

ответ

0

нормально, я решил это сам, должен был преобразовать его в оттенки серого:

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

 Смежные вопросы

  • Нет связанных вопросов^_^