二维码工具ZXing与visual-qr-code的使用

C++集成ZXing-cpp与OpenCV实现高性能二维码识别 二维码识别是计算机视觉中的一项基础技术,其核心原理是通过图像处理算法定位和解码二维矩阵中的编码信息。ZXing作为广泛使用的开源条码库,以其对多种码制的全面支持和算法鲁棒性而著称。在C++高性能项目中,直接集成其C++端口zxing-cpp,可以避免跨语言调用的开销,实现毫秒级延迟的实时处理。通过封装一层简洁的OpenCV接口,开发者能将cv::Mat图像数据无缝转换为ZXing内部格式,并利用其强大的解码能力处理QR Code、Data Matrix等多种格式。这种结合特别适用于嵌入式视觉、工业检测等对性 阅读详情

目录

一、Google二维码工具ZXing:

简介:

示例:

二、图片二维码生成工具 visual-qr-code:


一、Google二维码工具ZXing:

简介:

二维码现在是非常的火热,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。现在我们使用Google提供的ZXing开源类库来体验一下二维码的生成与解析。

引入依赖:

<dependency>

    <groupId>com.google.zxing</groupId>

    <artifactId>core</artifactId>

    <version>3.3.0</version>

</dependency>

<dependency>

    <groupId>com.google.zxing</groupId>

    <artifactId>javase</artifactId>

    <version>3.3.0</version>

</dependency>

 

示例:

package com.zzs.zxing;

 

import java.awt.image.BufferedImage;

import java.io.File;

import java.util.HashMap;

import java.util.Map;

 

import javax.imageio.ImageIO;

 

import org.junit.Test;

 

import com.google.zxing.BarcodeFormat;

import com.google.zxing.Binarizer;

import com.google.zxing.BinaryBitmap;

import com.google.zxing.EncodeHintType;

import com.google.zxing.LuminanceSource;

import com.google.zxing.MultiFormatReader;

import com.google.zxing.MultiFormatWriter;

import com.google.zxing.Result;

import com.google.zxing.client.j2se.BufferedImageLuminanceSource;

import com.google.zxing.client.j2se.MatrixToImageWriter;

import com.google.zxing.common.BitMatrix;

import com.google.zxing.common.HybridBinarizer;

 

public class ZXingTest {

    /**

     * Google提供的二维码生成

     */

    @Test

    public void test1() throws Exception {

       // 要生成二维码的内容

       String content = "www.baidu.com";

 

       Map hints = new HashMap();

       hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");

 

       // Zxing是Google提供的关于条码

       MultiFormatWriter multiFormatWriter = new MultiFormatWriter();

       // 二维码的描述对象

       BitMatrix bitMatrix = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400, hints);// 这里指明是二维码以及其大小(若要生成条形码等可修改第二个参数)

 

       // 生成的二维码路径

       File file = new File("E://my.jpg");

       MatrixToImageWriter.writeToFile(bitMatrix, "jpg", file);

       System.out.println("执行完毕");

    }

 

    /**

     * Google提供的解析二维码

     */

    @Test

    public void test2() throws Exception {

 

       File file = new File("E:\\code.gif");// 二维码文件

       BufferedImage image = ImageIO.read(file);

 

       LuminanceSource source = new BufferedImageLuminanceSource(image);

       Binarizer binarizer = new HybridBinarizer(source);

       BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);

 

       Map hints = new HashMap();

       hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");

 

       MultiFormatReader formatReader = new MultiFormatReader();

       Result result = formatReader.decode(binaryBitmap, hints);

 

       System.out.println("result = " + result.toString());

       System.out.println("resultFormat = " + result.getBarcodeFormat());

       System.out.println("resultText = " + result.getText());

    }

}


二、图片二维码生成工具 visual-qr-code:

 

visual-qr-code 是开源的图片二维码生成工具,可以创建出精美的二维码

使用示例:

import java.awt.Color;

import java.io.IOException;

 

import org.junit.Test;

 

import com.boat.visualqrcode.VisualQRCode;

 

public class Visual_qr_code_Test {

    @Test

    public void testPOSITIONRECTANGLE() {

       String url = "https://gitee.com/boat824109722/visual-qr-code/tree/master/";

       try {

           VisualQRCode.createQRCode(url, // 二维码内容、网址,必需

                  "E:\\purity.jpg", // 背景图片路径,必需

                  "E:\\qr.png", // 二维码输出路径,必需

                  'H', // 二维码容错等级,必需

                  new Color(2, 85, 43), // 二维码颜色,必需

                  null, // 二维码X轴起点,非必须,默认为图片的左上角

                  null, // 二维码Y轴起点,非必须,默认为图片的左上角

                  null, // 二维码的宽度,非必须,默认为背景图最小边

                  true, // 是否把背景图变成方形,非必须,默认为false不改变图片形状

                  VisualQRCode.POSITION_DETECTION_SHAPE_MODEL_RECTANGLE, // 二维码四个大码眼的形状,目前只支持方形和圆方形

                  VisualQRCode.FILL_SHAPE_MODEL_RECTANGLE);// 二维码点的形状,目前只支持方形和圆形

       } catch (IOException e) {

           e.printStackTrace();

       }

}

 

主要方法:

VisualQRCode.createQRCode(String content,

       String bgPath,

       String outPath,

       char Level,

       Color DF,

       Integer startX,

       Integer startY,

       Integer QRCodeWidth,

       Boolean isDeformation,

       Integer fillPositionDetectionShapeModel,

       Integer fillShapeModel

    );

 

/**

    1、content 二维码内容、网址,必需

    2、bgPath 背景图片路径,必需

    3、outPath 二维码输出路径,必需

    4、Level 二维码容错等级,必需

      可选:"L"、"M"、"Q"、"H"

        L水平 7%的字码可被修正

        M水平 15%的字码可被修正

        Q水平 25%的字码可被修正

        H水平 30%的字码可被修正

    5、DF 二维码颜色,必需

    startX 二维码X轴起点,非必须,默认为图片的左上角

    startY 二维码Y轴起点,非必须,默认为图片的左上角

    QRCodeWidth 二维码的宽度,非必须,默认为背景图最小边

      二维码的起始X/Y加上QRCodeWidth<=图片的宽/高

    6、isDeformation 是否把背景图变成方形,非必须,默认为false不改变图片形状

    7、fillPositionDetectionShapeModel 二维码四个大码眼的形状,目前只支持方形和圆方形

      可选:

        POSITION_DETECTION_SHAPE_MODEL_RECTANGLE

        POSITION_DETECTION_SHAPE_MODEL_ROUND_RECTANGLE

    8、fillShapeModel 二维码点的形状,目前只支持方形和圆形

      可选:

        FILL_SHAPE_MODEL_RECTANGLE

        FILL_SHAPE_MODEL_CIRCLE

*/

 

参考:

https://gitee.com/boat824109722/visual-qr-code

C++集成ZXing与OpenCV实现高性能二维码识别:从原理到工程实践 二维码识别作为计算机视觉中的一项基础技术,其核心原理是将图像中的黑白模块矩阵解码为结构化数据。ZXing(Zebra Crossing)是业界广泛使用的开源二维码识别库,其Java版本历史悠久且功能完善。然而,在追求极致性能、低延迟或需要深度集成的C++项目中,跨语言调用往往带来额外的性能开销和复杂性。为此,社区推出了C++原生移植版本ZXing-CPP,它完整实现了ZXing的核心算法,并提供了与现代C++项目兼容的API。其技术价值在于,开发者可以在纯C++环境中获得与Java版本相媲美的识别能力,同时 阅读详情

相关推荐

向PDF文件添加QRcode二维码

向PDF文件添加QRcode二维码    首先在VS2013新建C#的Windows Form应用程序,并向窗体添加两个button控件、一个Picturebox控件。 1 实现生成QRcode二维码图像。 1)添加引用zxing.dll文件,并且添加相应2条using语句。 2)添加代码如下。 using System; usingSystem.Collections.Gener

xu_emile的专栏 7305

Java中使用ZXing和QRCode生成二维码(附Demo)

生成二维码在Java中有多种方法,常用的是通过第三方库来实现,比较流行的库包括 ZXing (Zebra Crossing) 和 QRCode

码农研究僧的博客 2014

zxing-cpp静态库编译实战:32位/64位二维码生成与识别接入指南

在C++桌面或移动端开发中,集成二维码功能常受制于运行时依赖与部署兼容性。静态库与动态库的选择,本质是“编译时合入”与“运行时加载”的权衡——前者将代码直接编进可执行文件,省去DLL分发与版本冲突的烦恼。对于二维码生成与识别这类基础能力,静态链接能以较小体积换取出厂即用的可靠性,特别适合Windows客户端、医疗设备与嵌入式环境。zxing-cpp作为C++生态中成熟的二维码编解码库,借助CMake配置即可分别产出32位与64位静态库,配合Visual Studio工具链完成链接与调用。无论是文本转二维码,

weixin_28836989的博客 244

zxing-cpp项目全景解读:一个覆盖二维码、DataMatrix与PDF417的完整C++条码识别库

**zxing-cpp**(ZXing C++ Library)是一个功能完整的 C++ 条码识别库,原生支持二维码(QR Code)、DataMatrix、PDF417、Aztec 以及 EAN/UPC、Code 128 等常见一维条码,并内置命令行识别工具和 OpenCV 视频流集成,适合需要离线、轻量、跨平台条码解析的 C++ 项目。 ## 一、它是什么?从 ZXing 到 C++ ZX

gitblog_01042的博客 1076

C++实现ZXing库解析二维码技术详解

ZXing,全称“Zebra Crossing”,是一个开源的、用Java实现的库,用于解析多种格式的一维(1D)和二维码条码。它被广泛应用于各种设备和平台,从移动电话到Java SE应用程序,都可利用ZXing库来扫描条码。ZXing可以处理多种格式的条码,包括但不限于UPC-A、UPC-E、EAN-8、EAN-13、二维码(QR Code)、RSS 14、RSS EXPANDED、Data Matrix、Aztec和Codabar。

weixin_35433448的博客 849

Visual QR Codes Generator 支持彩色[二维码生成]

这个小工具可以生成自定义背景的二维码,让你的二维码有不一样的背景,可以是彩色的

探索高效二维码识别与生成:基于zxing的C++库

探索高效二维码识别与生成:基于zxing的C++库 【下载地址】zxing二维码识别CVS2019原工程 本仓库提供了一个基于zxing的C++库的二维码识别与生成工程,该工程已经使用Visual Studio 2019进行了配置,可以直接下载并使用。该资源文件包含了最新的zxing库,支持所有类型的二维码识别和生成功能...

gitblog_09820的博客 362

vb生成二维码QRCODE,使用zxing

vb生成二维码QRCODE,使用zxing; 方便简单地在vs form上生成二维码; 使用于.NET2.0以上。

zxing识别二维码的C++版本含OpenCV接口:轻松识别二维码,提升开发效率

zxing识别二维码的C++版本含OpenCV接口:轻松识别二维码,提升开发效率 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 zxing识别二维码的C++版本含OpenCV接口,是一款整合了zxing C++库与OpenCV接口的开源项目。它能够在Visual Studio 2010或更高版本的开发环境中,利用OpenCV的图像处理能力,快速、准确地进行二维码识别。...

gitblog_06753的博客 967

visual-qr-code-master.zip

visual-qr-code 可以创建出设置了虚拟背景图片的二维码,设置的背景图片或logo并不是只是在二维码中心,背景图片和logo都是半透明的,让二维码更好看

QR二维码动态库(可以在C#,VC等使用)

二维码QR动态库,很实用的,可以在C#、VC等编译器使用。

【亲测免费】 zxing二维码识别(C++)—VS2019原工程

zxing二维码识别(C++)—VS2019原工程 【下载地址】zxing二维码识别CVS2019原工程 本仓库提供了一个基于zxing的C++库的二维码识别与生成工程,该工程已经使用Visual Studio 2019进行了配置,可以直接下载并使用。该资源文件包含了最新的zxing库,支持所有类型的二维码识别和生成功能...

gitblog_09790的博客 502

QR二维码生成 VC++6.0 带中文日文双注释

QR二维码生成 VC++6.0 带中文日文双注释,原来日文注释版的,界面已经修改为中文,并增加了中文注释!

ZXing.NET C 二维码、条形码识别库

ZXing.NET C# 二维码、条形码识别库 去发现同类优质开源项目:https://gitcode.com/ 欢迎使用ZXing.NET C# 二维码、条形码识别库资源文件!本资源包含适用于Visual Studio 2008至2017版本的ZXing.NET C# 库,能够帮助开发者轻松实现二维码和条形码的识别功能。 资源描述 本资源包含了ZXing.NET C#库,这是一个.NET平台的条...

gitblog_06780的博客 578

Qrcode库及使用方法

C++ 集成了qrcode库,及使用方法。重点是qrlib,其中包含了lib.h和qrlib.lib,main.cpp只是简单的使用方法。运行环境Windows。

视觉二维码制作工具 Visual QR Codes Generator 版.zip

每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能及处理图形旋转变化等特点。 二维码是一种比一维码更高级的条码格式。一维码只能在一个方向(一般是水平方向)上表达信息,而二维码在水平和垂直方向都可以存储信息。一维码只能由数字和字母组成,而二维码能存储汉字、数字和图片等信息,因此二维码的应用领域要广得多。 Visual QR Codes Generator 软件功能特色: 支持图像模糊处理 支持图像居中对齐 支持图像清晰增强 支持绘制图像处理 支持图像擦除处理 支持图像裁剪(图片不宜过大,太大会造成无法正常显示) 支持 BMP,JPG,PNG,TIF,AVI,WMV,QRCA 等常见的图片格式生成二维码 为了方便一些不熟悉的人使用 Visual QR Codes Generator 工具,特意录制一个简单的视频教程,希望能帮助到一些不熟悉的人使用。

2017版VisualStudio asp.net利用ZXing生成条形码、二维码

2017版VisualStudio asp.net利用ZXing生成条形码、二维码一、在asp.net项目中添加ZXing1.右击项目-管理NuGet程序包2.搜索ZXing,下载ZXing.net并安装即可二、生成条形码1.页面如图所示2.生成条形码代码(1)配置环境(2)代码(3)运行效果三、生成二维码1.页面如图所示2.生成二维码代码(1)配置环境(2)代码(3)运行效果 一、在asp.net项目中添加ZXing 1.右击项目-管理NuGet程序包 2.搜索ZXing,下载ZXing.net并安装即

m0_46510657的博客 2310

同花顺CM函数深度解析:如何精准设置历史换手衰减系数以优化筹码峰

本文深度解析同花顺CM函数中的历史换手衰减系数,揭示其如何影响筹码峰准确性。通过拆解CM函数参数,并提供基于前十大流通股东锁定比例的计算公式,指导用户精准设置该系数,从而优化筹码峰模型,使其更真实反映个股持仓成本分布,提升技术分析的有效性。

mango的博客 1765

ZXing-C++ 二维码与条形码处理:从编译集成到实战应用全指南

二维码与条形码作为数据存储与交换的通用技术,其核心原理是将信息编码为特定规则的黑白图形矩阵或条纹,通过图像识别技术实现数据的快速读取与写入。在C++高性能应用开发中,直接集成原生条码处理库能有效避免引入Python解释器等额外依赖,从而优化二进制体积与执行效率。ZXing-C++作为Apache 2.0许可的纯C++端口,支持QR Code、Data Matrix、PDF417及EAN-13等主流格式,通过清晰的CMake接口与静态链接方式,为嵌入式设备、桌面应用等场景提供了高效的编解码解决方案。本文以实际

weixin_30378623的博客 331

Xilinx SDK工程编译、链接、调试注意事项

1、添加工程 启动SDK时选取workspace,如下图所示: 对应的workpace文件夹中会生成如下几个文件: 如果当前workspace是首次加载工程,SDK会进入启动界面 点击Import Project,导入已有工程 点击Browse,添加工程路径,一个完整的工程包含一个bsp文件夹,一个HW文件夹,和一个src文件夹(添加C功能函数) 点击Fini...

Autumn_He的博客 1万+

cuda安装时出现错误 Unable to locate package cuda-toolkit-12-4

cuda安装时出现错误 Unable to locate package cuda-toolkit-12-4

4865
上一篇: JavaMail-使用Java发送邮件
下一篇: Java发送短信
淋雨一直走啊
博客等级 码龄11年 39粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值