JAVA 识别图片中二维码 opencv 识别精准

JAVA 识别图片中二维码 opencv 识别精准



提示:以下是本篇文章正文内容,下面案例可供参考
前言:之前识别图片使用的是
在这里插入图片描述
后发现该方法识别图中的二维码不精准 经常识别不到二维码内容 总要想办法处理图片后识别
常用识别方法 图片转色调 旋转90度 还是会有个别识别不了的二维码 故 换成openCv 图片无自身问题情况下识别精准 代码奉上

一、添加依赖


        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacpp</artifactId>
            <version>1.5.7</version>
            <classifier>windows-x86_64</classifier>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>openblas</artifactId>
            <version>0.3.19-1.5.7</version>
            <classifier>windows-x86_64</classifier>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>opencv</artifactId>
            <version>4.5.5-1.5.7</version>
        </dependency>
        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>opencv</artifactId>
            <version>4.5.5-1.5.7</version>
            <classifier>windows-x86_64</classifier>
        </dependency>

二、依赖配置

需要注意pom中的opencv引用中的分类 在windows环境下改为weindows linux下改为linux

在这里插入图片描述

三、测试类

package com.ehs.antiepidemic.utils;

import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_core.StringVector;
import org.bytedeco.opencv.opencv_wechat_qrcode.WeChatQRCode;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

import static org.bytedeco.opencv.global.opencv_imgcodecs.imread;


/**
 * @author ChenYi
 */
public class WeChatDeCode {


    public static void main(String... args)  {
        openPic();
    }

    private static String openPic() {

        Mat img = imread("D:\\testImg\\15.jpg");
        return deCode(img);
    }

    public static String deCode(Mat img) {
        //微信二维码对象,要返回二维码坐标前2个参数必传;后2个在二维码小或不清晰时必传。
        WeChatQRCode we = new WeChatQRCode();
        List<Mat> points = new ArrayList<Mat>();
        //微信二维码引擎解码,返回的valList中存放的是解码后的数据,points中Mat存放的是二维码4个角的坐标
        StringVector stringVector = we.detectAndDecode(img);

        System.out.println(stringVector.get(0).getString(StandardCharsets.UTF_8));
        return stringVector.get(0).getString(StandardCharsets.UTF_8);
    }


}


四、结果

二维码识别精准

在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值