zxing解析二维码demo

2023-11-13

 

源文件.cpp

//#include "funset.hpp"
#include <string>
#include <fstream>
//#include <Windows.h>

#include <zxing/LuminanceSource.h>
#include <zxing/common/Counted.h>
#include <zxing/Reader.h>
#include <zxing/aztec/AztecReader.h>
#include <zxing/common/GlobalHistogramBinarizer.h>
#include <zxing/DecodeHints.h>
#include <zxing/datamatrix/DataMatrixReader.h>
#include <zxing/MultiFormatReader.h>
#include <zxing/pdf417/PDF417Reader.h>
#include <zxing/qrcode/QRCodeReader.h>

#include <opencv2/opencv.hpp>

#include "zxing/MatSource.h"
using namespace std;
using namespace cv;

string test_QRCode_decode(string image_name)
{

    string content = "";
    cv::Mat matSrc = cv::imread(image_name, 1);
    if (!matSrc.data) {
        fprintf(stderr, "read image error: %s", image_name.c_str());
        return content;
    }

    cv::Mat matGray;
    cv::cvtColor(matSrc, matGray, COLOR_BGR2GRAY);

    zxing::Ref<zxing::LuminanceSource> source = MatSource::create(matGray);
    int width = source->getWidth();
    int height = source->getHeight();
    fprintf(stderr, "image width: %d, height: %d\n", width, height);

    zxing::Ref<zxing::Reader> reader;
    reader.reset(new zxing::qrcode::QRCodeReader);

    zxing::Ref<zxing::Binarizer> binarizer(new zxing::GlobalHistogramBinarizer(source));
    zxing::Ref<zxing::BinaryBitmap> bitmap(new zxing::BinaryBitmap(binarizer));
    zxing::Ref<zxing::Result> result(reader->decode(bitmap, zxing::DecodeHints(zxing::DecodeHints::QR_CODE_HINT)));


    //获取解析结果
    content = result->getText()->getText();

    return content;
}

int main(){

    string path = "/home/leoxae/图片/qrcode1.png";
    string result = test_QRCode_decode(path);
    cout << "result==>" << result << endl;
}

 

cmakelist

cmake_minimum_required(VERSION 3.14)
project(ZxingQrcode)

set(CMAKE_CXX_STANDARD 14)

add_executable(ZxingQrcode main.cpp)



#找到opencv的包
set(TARGET_LIBS "/usr/local/include/opencv4/opencv2/")
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )

#zbar
set(zbar_include_dir "/usr/local/include")
set(zbar_link_dir "/usr/local/lib")

include_directories(${zbar_include_dir})
link_directories(${zbar_link_dir})
link_libraries(zbar)

#zxing
set(zxing_include_dir "/usr/local/include")
set(zxing_link_dir "/usr/local/lib")

include_directories(${zxing_include_dir})
link_directories(${zxing_link_dir})
link_libraries(zxing)


#jsoncpp
set(jsoncpp_include_dir "/home/leoxae/apps/jsoncpp/1.8.4/include")
set(jsoncpp_link_dir "/home/leoxae/apps/jsoncpp/1.8.4/lib")

include_directories(${jsoncpp_include_dir})
link_directories(${jsoncpp_link_dir})
link_libraries(jsoncpp)

#动态链接
#target_link_libraries(pedestrian_detection ${OpenCV_LIBS} )
target_link_libraries(ZxingQrcode ${OpenCV_LIBS} )
target_link_libraries(ZxingQrcode jsoncpp)
target_link_libraries(ZxingQrcode zbar)
target_link_libraries(ZxingQrcode zxing)

 

转载于:https://www.cnblogs.com/lx17746071609/p/11428901.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zxing解析二维码demo 的相关文章

随机推荐

  • [hive]分区表

    一 分区表的技术与意义 1 分区表技术 1 建表时通过partitioned by col name col type hive的分别区字段使用的是外字段 2 hive的分区 区分大小写 3 hive的分区本质是在表目录下面创建目录 但是该
  • WebAPI规范

    WebAPI规范 一 协议 通常使用HTTPs协议 二 域名 API较简单 可将API放在主域名下 以固定prefix开头 例如 https example com api xxxx API内容丰富 复杂多样 可将API部署在专属域名下 例
  • systemverilog的timescale作用域

    参考文献1 https www chipverify com verilog verilog timescale scope 在数字电路仿真过程中 如果没有模块本身没有指定timescale 则编译器本身可能插入一个默认的timescale
  • 什么是死亡之 Ping 攻击?

    死亡之 Ping 攻击是一种拒绝服务 DoS 攻击 攻击者旨在通过发送大于最大允许大小的数据包来破坏目标计算机 从而导致目标计算机冻结或崩溃 原始的死亡之 Ping 攻击如今并不常见 称为 ICMP 洪水攻击的相关攻击更为普遍 死亡之 Pi
  • AD PCB 封装 快速放置等间距焊盘的方法

    这个问题经常会用到 所以有必要总结一下 下面以制作29个焊盘为例 其实你可以随便设置的 划重点 先按E然后按A快捷键 设置数量和间距大小 先说一种通用的吧 用特殊粘贴来处理 具体的方法为 1 先放一个焊盘 选中后剪切掉 2 依次按下键盘上的
  • 电子科技大学软件工程期末复习笔记(二):软件过程

    目录 前言 重点一览 软件过程模型的定义 软件工程的中心与三要素 软件生存期模型 瀑布模型 快速原型模型 增量模型 螺旋模型 如何选择过程模型 能力成熟度模型的五个级别 过程和产品的关系 本章小结 前言 本复习笔记基于王玉林老师的课堂PPT
  • mysql数据库缺点_MySQL数据库的优缺点是什么

    MySQL数据库的优缺点 优点 体积小 速度快 总体拥有成本低 开源 支持多种操作系统 是开源数据库 提供的接口支持多种语言连接操作 MySql的核心程序采用完全的多线程编程 线程是轻量级的进程 它可以灵活地为用户提供服务 而不过多的系统资
  • OpenTSDB-时序数据库

    一 简介 OpenTSDB Open time series data base 时间序列数据库 顾名思义 就是以时间为标签存储数据 它的特点是能够提供最高 毫秒级精度 的时间序列数据存储 能够长久保存原始数据并且不失精度 但是OpenTS
  • 核心解读 - 2022版智慧城市数字孪生标准化白皮书

    核心解读 2022版智慧城市数字孪生标准化白皮书 前言 城市数字孪生基本概念 一 城市数字孪生概述 1 城市数字孪生内涵及概念模型 2 城市数字孪生典型特征 3 城市数字孪生相关方 4 城市数字孪生技术参考架构 5 城市数字孪生关键技术 二
  • windows双网卡时设置网络优先级

    前言 仅在win10测试可用 在工作中需要连接公司内网 有线 不可联网 访问外网时需要连接无线 同时接入这两个网络时 内网访问正常 外网无法访问 此时可以通过调整网络优先级及配置路由实现内外网同时访问 一般来说 内网的网段数量较少 我们可以
  • 史上最详细教你制作“U盘启动盘”重装Windows10系统

    前言 几个月前的小编自己的一台windows笔记本系统崩溃 当时我还不会重装系统 而且那台笔记本的性能实在是太差的 内存特别小的古董笔记本 现在换了新的电脑 我现在要做的是 依靠手里的这台电脑 通过制作U盘启动盘 来重装我的windows系
  • JSP基础_0800_Directive 编译期指令

    Directive 编译指令 编译期间的指令 格式 常见的Directive page include 以后常用 必须掌握 taglib 1 page的下面四个属性最常用 2 include属性
  • 1695 删除子数组的最大得分

    题目描述 给你一个正整数数组 nums 请你从中删除一个含有 若干不同元素 的子数组 删除子数组的 得分 就是子数组各元素之 和 返回 只删除一个 子数组可获得的 最大得分 如果数组 b 是数组 a 的一个连续子序列 即如果它等于 a l
  • vscode配置PHP调试xDebug

    一 安装XDebug环境 1 在PHP页面写上phpinfo 打印PHP信息 如下图 2 整个网页全新复制黏贴到 https xdebug org wizard 如下图 点击分析按钮 3 如下图 分析结果 按如下步骤操作即可 4 下载xde
  • 查看端口号被哪些进程所占用,如何根据PID查看其对应的程序

    查看端口号 在终端里面输入 netstat ano PID所对应的程序 首先按 shift Ctrl esc 任务管理器 状态 右键显示出PID 任务管理器可以搜索PID 找到对应的PID就知道端口号了 查询PID更快的方法 powersh
  • es6数组去重+找出去重的个数

    本Markdown编辑器使用 StackEdit 6 修改而来 用它写博客 将会带来全新的体验哦 分享es3去重 找出重复个数跟es6的 Array prototype unique3 function var res var json f
  • 学历不应该成为“枷锁”

    孔乙已是鲁迅笔下人物 穷困流倒还穿着象征读书人的长衫 迁腐 麻木 最近 大家自我调佩是 当代孔乙己 学历成为思想负担 找工作时高不成低不就 你可以从以下几个角度说说你对看法 一 你认为社会对于学历和职业之间的关系认知是怎样的 首先我认为社会
  • PowerDesigner中显示name, code,comment的解决方法 修正脚本,执行不会重复添加comment...

    Option Explicit ValidationMode True InteractiveMode im Batch Dim mdl the current model get the current active model Set
  • 虚拟机内搭建CTFd平台搭建及CTF题库部署,局域网内机器可以访问

    一 虚拟机环境搭建 1 安装docker git docker compose ubuntu sudo apt get update 更新系统 sudo apt get y install docker io 安装docker sudo a
  • zxing解析二维码demo

    源文件 cpp include funset hpp include