
//首先将图cur_img转换为灰度图
//cv::cvtColor(cur_img, cur_img, cv::COLOR_BGR2GRAY);
//zbar::ImageScanner 创建一个图像扫描的对象
zbar::ImageScanner scanner;
//调用set_config方法进行条形码识别 现在一般都CODE128
scanner.set_config(zbar::ZBAR_NONE, zbar::ZBAR_CFG_ENABLE, 1);
//准备图像数据 首先获取cur_img数据的指针
//创建一个zbar::Image
uchar* raw = (uchar*)cur_img.data;
if (!raw)
return 0;
zbar::Image imageZbar(cur_img.cols, cur_img.rows, "Y800", cur_img.data, cur_img.step);
//扫描条形码
scanner.scan(imageZbar);
//对比识别结果
zbar::Image::SymbolIterator symbol = imageZbar.symbol_begin();
if (symbol == imageZbar.symbol_end())
{
std::cout << "查询条码失败,请检查图片!" << std::endl;
return -1;
}
else {
//提取条形码信息
for (; symbol != imageZbar.symbol_end(); ++symbol) {
std::string bar_type = symbol->get_type_name();
//将条形码数据存储在barcode中
ans = symbol->get_data().c_str();
break;
}
}
return 0;Result:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。