首页 > 其他分享 >zbar:Qt调用zbar做条码识别

zbar:Qt调用zbar做条码识别

时间:2023-08-24 17:00:29浏览次数:28  
标签:条码 调用 Qt pData zbar 识别

需求:Qt开发的一个程序,妹子总是说需要条码识别功能,没办法,只能加上这个功能

 

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

 

主要代码:

#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;
}

 

然后就可以拉

 

标签:条码,调用,Qt,pData,zbar,识别
From: https://www.cnblogs.com/shiyixirui/p/17654596.html

相关文章

  • Qt中的键盘事件和鼠标事件
    Qt是一个流行的C++框架,用于开发跨平台的应用程序。在Qt中,键盘事件和鼠标事件是实现交互性和响应性的重要部分。Qt中定义了多种键盘事件和鼠标事件,这些事件可以用于处理用户与界面的交互。下面将详细介绍常用的键盘事件和鼠标事件及其用途。一、键盘事件1.QKeyEventQKeyEvent是......
  • 手动将QT项目打包成exe(手动打包,不是CMake自动打包)
    综述:仅记录QT项目打包的过程。构建工具:CMake主要流程:确保项目软件可以正常运行。使用release生成发布文件夹。将发布文件夹中的运行文件和依赖文件打包到另一个文件夹中。步骤:一、确保项目软件可以正常运行。点击左下角的运行按键确保软件正常运行(如果不能正常运行,下......
  • Qt编写网易云界面 (5) -----专属定制和歌单实现
    今天主要完成专属定制和歌单部分,效果如图:UI部分:主要的qss:/*专属定制部分*/QLabel#lab_per{ font-family:"微软雅黑"; color:rgb(55,55,55); font-size:20px; font-weight:bold;}QLabel#lab_per2{ font-family:"微软雅黑"; color:rgb(159,159,159);}Q......
  • QTL
     QTL:是数量性状基因座:它指的是控制数量性状的基因在基因组中的位置。QTL实际上是一个抽象的概念。指的是存在与基因组中的某一位置,这个位置上的基因会影响某一数量性状的表达。QTL可以是一个简单的基因座,也可以是多个基因座的组合。......
  • QT数据库连接管理类
    使用单例管理整个项目的数据库连接。在QT中不同线程须使用不同的数据库实例。MySql有连接超时——超过设定(默认8小时)没有活动会关闭连接。一、头文件#pragmaonce#ifndefCSQLDATABASE_H#defineCSQLDATABASE_H#include<QtSql>#include<QString>#include<QMutex>#i......
  • Qt编写网易云界面 (4) -----轮播图的实现
    今天主要是完成一下中间部分的第一页效果如图:ps:轮播图实在是不会,网上找了个大佬的先用着在说。链接。另外还加了换肤功能,当然只是简单的纯色皮肤,如图:UI设计:changecolorform.h#ifndefCHANGECOLORFORM_H#defineCHANGECOLORFORM_H#include<QWidget>namespaceUi{cl......
  • Qt/C++开发经验小技巧281-285
    悬停窗体QDockWidget默认在标题栏右键会弹出悬停模块的显示隐藏菜单,如果需要去掉,会发现设置Qt::NoContextMenu或者事件过滤器拦截都是无效的,必须设置dockWidget->setContextMenuPolicy(Qt::PreventContextMenu);。Qt中的布局有个默认的margin边距值和spacing间距值,在没有设......
  • error LNK2019: 无法解析的外部符号 (VS2022创建QT文件)
    运行过程中,编译没有问题,但是在输出会显示以下问题 同时出现errorLNK2001、2019、1120,查询网上一些资料得知是链接过程中出现错误:属于的类型是包含符号定义的目标文件或库未链接。由于使用VS2022上拓展的工具QTVSTools创建的QT文件,在使用以下两个头文件:#include"QtNetWor......
  • Qt Creator 11.0.2 设计器的智能化还有待提高
    QtCreator11.0.2设计器的智能化还有待提高在设计器中加入一个QComboBox,使用"转到槽.."时,选择信号activated时只出来一种定义,查QT帮助资料可以看到是应该有两种方式,两种方式的传参不一样,一个是int整数,一种是QString字符串,但这里只给出一种有点不人性化查看帮助 这里我们来验证......
  • QT将资源打包为外部资源文件进行引用
    QT将资源打包为外部资源文件进行引用将资源打包为外部资源文件进行引用,这样能减少可执行程序exe的大小,在调试运行时需要将相应的rcc复制到对应的Debug或release目录下,否则会加载不了资源对应的qrc应该类似于myres.qrc<RCC><qresourceprefix="/"><file>res/img_bg_level_1.jpg</......