iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java使用opencv识别二维码的完整步骤
  • 330
分享到

Java使用opencv识别二维码的完整步骤

2024-04-02 19:04:59 330人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言OpenCV的安装开发环境配置识别二维码总结前言 OpenCV的全称是Open Source Computer Vision Library,它是一个跨平台的计算机视觉库,由

前言

OpenCV的全称是Open Source Computer Vision Library,它是一个跨平台的计算机视觉库,由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV本身由c++语言开发,但也具有各种其他语言的接口,并支持windowslinuxiOSAndroid等各种操作系统。本文将介绍如何使用OpenCV与Java语言进行二维码识别。

OpenCV的安装

目前OpenCV最新的版本是4.5.2,根据所在平台不同,OpenCV有多种安装方式。可以下载编译好的包,也可以编译安装。这里我们介绍一下如何在Mac系统通过homebrew编译安装支持Java的OpenCV。其他系统的安装方式请自行在搜索相关文章。

     1. 通过brew安装ant


brew install ant

    2. 修改opencv homebrew fomula。


brew edit opencv

找到 -DBUILD_opencv_java=OFF 这一行,并修改为 -DBUILD_opencv_java=ON 保存

    3. 安装openCV


brew install opencv --build-from-source

  编译安装完成后,java jar包和库文件会出现在 /usr/local/homebrew/Cellar/opencv/4.5.2/share/java/opencv4 目录。(M1芯片的mac会出现在/opt/homebrew/Cellar/opencv/4.5.2/share/java/opencv4下)

开发环境配置

在您使用的IDE中,引入上述目录下的opencv-452.jar包。并且在启动命令后加上


-Djava.library.path=/usr/local/homebrew/Cellar/opencv/4.5.2/share/java/opencv4

将java.library.path设置为编译出来的opencv动态链接库的地址

识别二维码

首先加载Opencv对应的library


System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

OpenCV的二维码识别有两个方案,一个是使用org.opencv.objdetect.QRCodeDetector, 另一个是使用微信贡献的二维码识别算法org.opencv.wechat_qrcode.WeChatQRCode。微信的二维码识别类无论在准确度和识别成功率上都大大超过了opencv的QRCodeDetector,并且使用起来也非常简单,所以今天我们主要介绍微信包的二维码识别。

首先我们通过ImGCodecs加载包含二维码的图像文件


var img = Imgcodecs.imread(file.getPath())

然后初始化WeChatQRCode对象并识别二维码

其中,detect.prototxt与detect.caffemodel文件是检测的DNN的模型文件和参数文件,不传这两个文件也可以解析一些二维码,但是最后的返回值无法定位准确的二维码在图像中的坐标,只能显示整个图像的完整大小。sr.prototxt, sr.caffemodel文件是超分辨率图像增强的DNN模型文件和参数文件,可以帮助分析定位大图片中的比较小的二维码。以上四个文件都可以在这里下载:https://GitHub.com/WeChatCV/opencv_3rdparty/

这里最关键的代码是detector.detectAndDecode(),他接收两个参数,第一个参数是图像的Mat对象(彩色或灰度皆可),第二个参数是返回参数,会将定位到的二维码所在范围的坐标放在这个列表里面。列表的长度代表了识别到了几个二维码,每个列表对象是一个4*2*1的矩阵Mat对象,矩阵每一行代表了图片上的一个坐标,第一列是x坐标值,第二列是y坐标值。函数的返回值是一个字符串列表。列表的长度和第二个参数列表相等,里面存放了每个二维码解析后的字符串

有了坐标数组我们就可以很方便的把二维码区域在图像中标记出来,例如:


if (results.size() > 0) {
    System.out.println("识别到的二维码个数为: " + results.size());
    for (var resultStr : results) {
        System.out.println(“识别到的二维码内容为:" + resultStr);
    }
​
​
    for (var points : pointsOfRect ) {
        int noOfRows = points.rows();
        int noOfCols = points.cols();
        for (int row = 0; row < noOfRows; row++) {
            Imgproc.line(result, new Point(points.get(row, 0)[0], points.get(row, 1)[0]),
                    new Point(points.get((row + 1) % noOfRows, 0)[0], points.get((row + 1) % noOfRows, 1)[0]),
                    new Scalar(255, 0, 0), 3);
        }
    }
} else {
    System.out.println("未识别到二维码.");
};

 结果示例如下:

 

通过上面这么些代码就能让我们拥有微信类似的二维码识别能力,是不是觉得很简单呢?

总结

到此这篇关于Java使用opencv识别二维码的文章就介绍到这了,更多相关Java用opencv识别二维码内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java使用opencv识别二维码的完整步骤

本文链接: https://www.lsjlt.com/news/135630.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java使用opencv识别二维码的完整步骤
    目录前言OpenCV的安装开发环境配置识别二维码总结前言 OpenCV的全称是Open Source Computer Vision Library,它是一个跨平台的计算机视觉库,由...
    99+
    2022-11-12
  • Linux上Java实现二维码实时生成和识别的完整教程。
    Linux上Java实现二维码实时生成和识别的完整教程 二维码技术是一种比较流行的信息传递方式,它可以将大量的信息编码成一个小小的二维码,方便快捷地传递信息。本文将介绍如何在Linux上使用Java实现二维码的实时生成和识别。 准备工作 ...
    99+
    2023-07-29
    linux 实时 二维码
  • 如何使用Java在Linux上实时识别二维码?
    二维码已经成为了现代生活中不可或缺的一部分。它们可以用于各种用途,例如在商业上用于商品的销售和促销,以及在社交媒体上用于分享信息和链接。在本文中,我们将学习如何使用Java在Linux上实时识别二维码。 首先,我们需要安装Java和相关的...
    99+
    2023-07-29
    linux 实时 二维码
  • 如何使用Java开发二维码图像识别系统?
    二维码图像识别是一项非常有用的技术,可以应用于许多场景,如门禁系统、身份验证等。Java是一种流行的编程语言,也可以用来开发二维码图像识别系统。在本文中,我们将介绍如何使用Java开发二维码图像识别系统,包括如何使用Java实现二维码解码和...
    99+
    2023-09-18
    二维码 开发技术 对象
  • 如何在Linux上使用Java实现实时识别二维码?
    在Linux上使用Java实现实时识别二维码并不是一件困难的事情,本文将介绍如何使用Java和相关的库实现这个功能。 一、安装必要的库 要实现实时识别二维码,我们需要使用Java的图像处理库和二维码识别库。这里我们使用JavaCV和Zxin...
    99+
    2023-07-29
    linux 实时 二维码
  • Android上使用ZXing识别条形码与二维码的方法
    目前有越来越多的手机具备自动对焦的拍摄功能,这也意味着这些手机可以具备条码扫描的功能。手机具备条码扫描的功能,可以优化购物流程,快速存储电子名片(二维码)等。 本文所述实例就使...
    99+
    2022-06-06
    方法 条形码 zxing 二维 二维码 Android
  • PHP IDE 中如何使用二维码实现数据类型的快速识别?
    在 PHP 开发中,数据类型的识别是非常重要的。不同的数据类型在处理时会有不同的方法和规则。而在开发过程中,我们经常需要查看变量的数据类型,以便正确地使用它们。为了提高开发效率,我们可以使用二维码来实现快速识别数据类型。 在 PHP 中,...
    99+
    2023-07-27
    ide 二维码 数据类型
  • 如何使用Java中的同步函数生成带有时间戳的二维码?
    二维码是一种二维条码,可以将文本信息编码成一组黑白像素,并通过扫描二维码的方式进行信息读取。在现代社会中,二维码已经广泛应用于各种场景,例如支付、身份验证等。Java中提供了丰富的库来生成和解析二维码。本文将介绍如何使用Java中的同步函...
    99+
    2023-10-17
    函数 同步 二维码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作