编译:

zbar Windows编译:https://gitee.com/vvvj/zbar-windows

下载下来后,直接使用vs来编译就可以了。

zbar官网:https://zbar.sourceforge.net/download.html

zbar Mac和Linux编译:

Mac版zbar源码压缩包,0.10版本,下载地址:https://wwqx.lanzoul.com/ihCqf18ctuqh

解压缩,然后按照下面的命令来编译就可以了

# Linux编译需要加参数 CFLAGS, ARM架构、Loongarch架构需要指定编译架构
# ./configure CFLAGS="" --prefix=pwd/build --with-pic=yes --disable-video --without-imagemagick --without-gtk --without-qt --without-python
# ./configure CFLAGS="" --prefix=pwd/build --with-pic=yes --disable-video --without-imagemagick --without-gtk --without-qt --without-python --build=arm-linux
# ./configurt CFIAGS="" --prefix=pwd/build --with-pic=yes --disable-video --without-imagemagick --without-gtk --without-qt --without-python --build=loongarch64-unknown-linux
./configure --prefix=pwd/build --with-pic=yes --disable-video --without-imagemagick --without-gtk --without-qt
make
make install

主要代码:

#include "zbar.h"
using namespace zbar;
void heihei::tool_tiaoma()
{
// qDebug() << "条码 === begin =====";
QImage img;
img.load("1.png"); // QImage加载jpg,可能失败 unsigned char* pData = new unsigned char[img.width() * img.height()];
for (int n = 0; n < img.height(); n++)
for (int m = 0; m < img.width(); m++)
pData[n * img.width() + m] = qGray(img.pixel(m, n)); // 传入的img data需要这样写才行,要是直接调用QImage::bits,会没有数据
Image imagezbar(img.width(), img.height(), "Y800", pData, img.width() * img.height());
ImageScanner scanner;
scanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);
/*int codeCount = */scanner.scan(imagezbar);
// qDebug() << "识别到的条码数量:" << codeCount; Image::SymbolIterator sym = imagezbar.symbol_begin();
if(imagezbar.symbol_begin() == imagezbar.symbol_end())
{
qDebug() << "识别失败";
}
else
{
for(;sym != imagezbar.symbol_end(); ++sym)
{
qDebug() << "条码内容:" << QString::fromStdString(sym->get_data());
}
} // 释放
delete[] pData;
pData = NULL;
}

然后就可以拉

zbar:Qt调用zbar做条码识别的更多相关文章

  1. WindowsAPI调用和OCR图片识别

    傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...

  2. QT 调用VS2015编写的Dll

    最近在用QT调用VC生成的库,QT使用的是MinGW调试器,出现与动态库不兼容的问题,最后发现QT只能识别VC生成的C格式下的动态库 也就是在导入导出设置时加入extern "C" ...

  3. qt调用sql server存储过程并获取output参数

    最近新做的一个项目需要使用qt5连接另一台机器上的sql server,虽然网上已有类似文章,但还是有些其中很少提及的问题,故在这里汇总下: qt连接sql server可以参考这篇文章: <Q ...

  4. QT调用C#写的Dll

    参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...

  5. .NET做人脸识别并分类

    .NET做人脸识别并分类 在游乐场.玻璃天桥.滑雪场等娱乐场所,经常能看到有摄影师在拍照片,令这些经营者发愁的一件事就是照片太多了,客户在成千上万张照片中找到自己可不是件容易的事.在一次游玩等活动或家 ...

  6. Qt大型工程开发技术选型Part3:Qt调用C#编写的COM组件实例

    Qt大型工程开发技术选型Part3:Qt调用C#编写的COM组件实例以及错误总结 ok,前面铺垫了那么多,现在来写一个开发实例,我会把其中隐藏的坑和陷阱简单谈谈,并在文章最后总结. 不愿意看长篇大论的 ...

  7. 现场打印智能无线PDA安卓POS 条码识别、打印、数据采集销售开单收银管理软件

    现场打印安卓POS 条码识别.打印.数据采集管理软件 案例: 经营日化品牌,从事小型超市和日用品商店的批发配送业务. 公司以前的销售模式:三个业务员负责跑市场,每个人负责一个区域,平均每天每个人要去到 ...

  8. Qt调用Server SQL中的存储过程

    Server SQL中的存储过程如下: CREATE procedure PINSERTPC @pcnum int, @pcname varchar(50), @pctype int, @ipaddr ...

  9. Qt调用WebService

    从网上查找Qt调用WebService的方案,需要下载三方的类库,而且需要使用好几个控制台命令,才能生成代理客户端类.因为只是简单的测试,没有采用这种方式,直接使用HTTP的Get获取网站内容,也非常 ...

  10. 如何在程序中调用Caffe做图像分类

    Caffe是目前深度学习比较优秀好用的一个开源库,采样c++和CUDA实现,具有速度快,模型定义方便等优点.学习了几天过后,发现也有一个不方便的地方,就是在我的程序中调用Caffe做图像分类没有直接的 ...

随机推荐

  1. 【Azure 应用服务】基于Azure的CI/CD工具链部署App Service

    问题描述 在中国区Azure中,App Service是否支持CI/CD工具部署呢? Windows 和Linux两个系统都是同样的方法吗? 问题解答 目前中国区Azure支持Windows 和 Li ...

  2. 【Azure 事件中心】如何查看事件中心的消息中具体报文内容呢?

    问题描述 如何查看事件中心的消息中具体报文内容呢? 问题解答 正常情况是通过 Event Hub 的消费端获取消息进行处理查看,但是没有客户端代码的情况下,也可以通过微软的默认客户端Service B ...

  3. 十一: 数据库缓冲池(buffer pool)

    数据库缓冲池(buffer pool) InnoDB 存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页 面(包括读页面.写页面.创建新页面等操作).而磁盘 I/O 需 ...

  4. C++ //常用拷贝和替换算法 //copy //replace 将指定区间范围内的旧元素修改为新元素 //replace_if(满足条件的元素,替换指定的元素) //swap 互换两个容器的元素

    //常用拷贝和替换算法 //copy //replace 将指定区间范围内的旧元素修改为新元素 //replace_if(满足条件的元素,替换指定的元素) //swap 互换两个容器的元素 #incl ...

  5. C++ Qt开发:QFileSystemModel文件管理组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用QFi ...

  6. 如何避免MYSQL主从延迟带来的读写问题?

    在MYSQL 部署架构选型上,许多公司都会用到主从读写分离的架构,如下是一个一主一从的架构,主库master负责写入,从库slave进行读取. 但是既然是读写分离,必然会面临这样一个问题,当在主库上进 ...

  7. Java面经知识点图谱总结

    未完待续~~~

  8. 将MindSpore运行结果输出到log文件

    技术背景 我们在Linux系统下使用一些深度学习框架(如MindSpore)运行脚本的时候,经常会用一些打印输出来判断当前执行的步骤,或者是使用打印输出来定位算法问题.但是在Linux系统下程序输出其 ...

  9. ThreadLocal父子间通信的四种解决方案

    ThreadLocal父子间通信的四种解决方案 ThreadLocal 是存储在线程栈帧中的一块数据存储区域,其可以做到线程与线程之间的读写隔离. 但是在我们的日常场景中,经常会出现父线程需要向子线程 ...

  10. Android WebView获取html源码

    通过执行js语句来获取 val code = """ document.documentElement.outerHTML """.trim ...