//
// Created by leoxae on 2020/3/30.
//
#include "BarCodeRecogntion.h"
string BarCode::BarCodeRecognition(Mat image) {
string result;
zbar::ImageScanner scanner;
scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1);
Mat imageGray;
cvtColor(image, imageGray, COLOR_RGB2GRAY);
int width = imageGray.cols;
int height = imageGray.rows;
auto *raw = (uchar *) imageGray.data;
zbar::Image imageZbar(width, height, "Y800", raw, width * height);
//扫描条码
scanner.scan(imageZbar);
zbar::Image::SymbolIterator symbol = imageZbar.symbol_begin();
if (imageZbar.symbol_begin() == imageZbar.symbol_end()) {
cout << "查询条码失败,请检查图片!" << endl;
}
for (; symbol != imageZbar.symbol_end(); ++symbol) {
cout << "类型:" << symbol->get_type_name() << endl;
cout << "条码:" << symbol->get_data() << endl;
result = symbol->get_data();
}
imshow("Source Image", image);
waitKey();
imageZbar.set_data(NULL, 0);
return result;
}
Talk is cheap. Show me the code