zbar:Qt调用zbar做条码识别
编译:
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做条码识别的更多相关文章
- WindowsAPI调用和OCR图片识别
傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...
- QT 调用VS2015编写的Dll
最近在用QT调用VC生成的库,QT使用的是MinGW调试器,出现与动态库不兼容的问题,最后发现QT只能识别VC生成的C格式下的动态库 也就是在导入导出设置时加入extern "C" ...
- qt调用sql server存储过程并获取output参数
最近新做的一个项目需要使用qt5连接另一台机器上的sql server,虽然网上已有类似文章,但还是有些其中很少提及的问题,故在这里汇总下: qt连接sql server可以参考这篇文章: <Q ...
- QT调用C#写的Dll
参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...
- .NET做人脸识别并分类
.NET做人脸识别并分类 在游乐场.玻璃天桥.滑雪场等娱乐场所,经常能看到有摄影师在拍照片,令这些经营者发愁的一件事就是照片太多了,客户在成千上万张照片中找到自己可不是件容易的事.在一次游玩等活动或家 ...
- Qt大型工程开发技术选型Part3:Qt调用C#编写的COM组件实例
Qt大型工程开发技术选型Part3:Qt调用C#编写的COM组件实例以及错误总结 ok,前面铺垫了那么多,现在来写一个开发实例,我会把其中隐藏的坑和陷阱简单谈谈,并在文章最后总结. 不愿意看长篇大论的 ...
- 现场打印智能无线PDA安卓POS 条码识别、打印、数据采集销售开单收银管理软件
现场打印安卓POS 条码识别.打印.数据采集管理软件 案例: 经营日化品牌,从事小型超市和日用品商店的批发配送业务. 公司以前的销售模式:三个业务员负责跑市场,每个人负责一个区域,平均每天每个人要去到 ...
- Qt调用Server SQL中的存储过程
Server SQL中的存储过程如下: CREATE procedure PINSERTPC @pcnum int, @pcname varchar(50), @pctype int, @ipaddr ...
- Qt调用WebService
从网上查找Qt调用WebService的方案,需要下载三方的类库,而且需要使用好几个控制台命令,才能生成代理客户端类.因为只是简单的测试,没有采用这种方式,直接使用HTTP的Get获取网站内容,也非常 ...
- 如何在程序中调用Caffe做图像分类
Caffe是目前深度学习比较优秀好用的一个开源库,采样c++和CUDA实现,具有速度快,模型定义方便等优点.学习了几天过后,发现也有一个不方便的地方,就是在我的程序中调用Caffe做图像分类没有直接的 ...
随机推荐
- 吐血分享一套iOS底层面试题,真心想帮你!!!
一 选择题(单选/多选) 1. 在LP64下,一个指针的有多少个字节 A: 4 B: 8 C: 16 D: 64 答案B解析: 1个指针8字节 2. 一个实例对象的内存结构存在哪些元素 A:成员变量 ...
- Jenkins+maven+svn+tomcat持续集成环境
前言 团队最近要把项目发布的工作拿过来,所以需要一个持续集成发布系统 直接上步骤. 下载 http://mirrors.jenkins-ci.org/war/latest/ 直接下载war包,我下载的 ...
- java数组案例
数组: 数组就是用来存储一批同类型数据的内存区域(容器) 数组中的最大值实现方法: 数据拿到程序中去,用数组装起来. 定义一个变量,用于记录最大值.这个变量建议默认存储第一个元素作 ...
- STL-priority_queue模拟实现
#include<deque> //测试用 #include<vector>//测试用 #include"9Date.h"//测试用 #include< ...
- ArrayList学习总结
1.ArrayList简介[1] ArrayList实现了List接口.ArrayList的方法实现和vector相似,只是线程不安全的. ArrayList的 size.isEmpty.get.se ...
- 面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会
写在开头 面试官:小伙子请聊一聊Java中的精灵线程? 我:什么?精灵线程?啥时候精灵线程? 面试官:精灵线程没听过?那守护线程呢? 我:守护线程知道,就是为普通线程服务的线程嘛. 面试官:没了?守护 ...
- MyBatis的Example类详解
Example类的定义? 第一次幕课网教程看到关于这方面教时,没有懂example起什么用,感觉不用example也可以查询了,后来认真一看才知道这是查询条件生成器 mybatis-generator ...
- 搭建一个Java项目可直接拿去使用的通用工具类
1.通用枚举类 import lombok.Getter; /** * @Description 状态码定义约束,共6位数,前三位代表服务,后3位代表接口 * 比如 商品服务210,购物车是220.用 ...
- 用户不在 sudoers 文件中。此事将被报告
在终端,进入root模式 vim /etc/sudoers 在 sudo (ALL:ALL) ALL下 添加 用户名 (ALL:ALL) ALL
- idea的安装和无限期试用
十年前在笔者开发的时候一直使用的是eclipse软件,但后来所有的发现公司基本用的是idea,还得重新学习idea用法,所以准备在去新公司前,来学习使用idea吧 第一步:安装idea https:/ ...