精华内容
下载资源
问答
  • 模糊二维码识别如果想看累赘啰嗦的可直接点下面已搭建好的环境进行识别二维码,目前只开放了QR Code 如果想看累赘啰嗦的可直接点下面已搭建好的环境进行识别二维码,目前只开放了QR Code 首先 大概说一下工业...

    如果不想看累赘啰嗦的可直接点下面已搭建好的环境进行识别二维码,目前只开放了QR Code

    首先
    市面专用读码器如:康耐视,基恩士读取模糊二维码效果不错,但是大家都知道品牌读码器一般在1.5万-2万之间,如果有软件版本就再好不过了。
    大概说一下工业相机常见的几种格式分别有bayerBG,bayerGB,bayerGR,BRG10packed ,MONO8,RGB8packed等等,其中我们最常用的是MONO8了,MONO8本身就是就是灰度图像了,这对于下一步的识别可减少一步图像灰度话的操作,但是如果你需要保存图像需要额外加上头部信息,因为MONO8的格式是不带图像头,这可能是由于节省空间占用的缘故,要知道相机传输字节流越小越好。
    然后
    我们就需要对图像进行预处理操作,一般来说有滤波去噪、边缘检测、定位矫正,图像二值化等操作,图像预处理需要根据二维码的模糊程度来进行,对于这一步可以在设计软件时预留几种识别模式:标准识别,加强识别等,识别越强进行的预处理越多,越复杂。
    最后
    等所有的前奏都准备完了就开始进行识别,识别控件无非就是zbar,zxing等等,废话说了这么多,下面提供一个在线识别的地址供大家进行测试
    上传3张模糊图
    在这里插入图片描述在这里插入图片描述 在这里插入图片描述
    点进去下载dll及DEMO
    http://www.o20.net/MFCQRReader.rar
    有需要请下载

    展开全文
  • 通过手机摄像头扫描二维码
  • js实现长按二维码识别及上传二维码识别。样式随便写的,可以自己修改
  • 主要大家详细介绍了QRCode.js二维码生成并长按识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 二维码识别、扫码二维码、扫描二维码
  • 二维码提取(包括识别

    千次阅读 2020-08-02 09:06:27
    二维码提取(包括识别) 实验室相关课题需要对二维码中心点作为特征点来提取,得到其像素坐标,然后利用深度相机恢复其三维空间坐标,用于后续实验。本文主要针对二维码中心点像素坐标提取做介绍。 ...

    二维码提取(不包括识别)

    实验室相关课题需要对二维码中心点作为特征点来提取,得到其像素坐标,然后利用深度相机恢复其三维空间坐标,用于后续实验。本文主要针对二维码中心点像素坐标提取做介绍。

    二维码概述

    二维码在日常生活中非常常见,其符号图形如图所示,QR二维码全称Quick Response,简称为QR码,QR码是在1994年9月由Denso公司研制而成。
    在这里插入图片描述
    QR码是由一系列相同尺寸的黑白小方格组成的正方形条码,其由编码区、分隔符、寻像图形、位置探测图形、校正图形和定位图形等识别功能图形组成。QR码和其它传统二维码相比具有高信息量、高可靠性以及高速全方位识读等特点,所以QR码已经广泛应用于各行各业。QR码由很多不同的符号结构组成,每一块符号结构均具有特定的功能,QR二维码的符号结构说明图如图所示。在这里插入图片描述
    由二维码的符号结构说明图可以看到其有三个分别位于左上角、右上角和左下角的“回”字形图案,这三个“回”字形图案被称为位置探测图形,如下图所示。将位置探测图形的黑白交界从左到右或从上到下画一条直线,则这条直线经过的图案黑白比例大约为1:1:3:1:1,其不仅具有独特的像素比例关系,而且具有旋转不变性,比较容易从图像中提取出来,所以利用其三个位置探测图形,二维码可在图片中被快速地定位和提取出来。
    在这里插入图片描述

    ZBar算法实现二维码检测

    由于二维码是标准化产品,并且在日常生活中应用广泛,目前已经有开源的二维码检测算法用于工业、物流业等行业中实现对二维码的快速检测。目前二维码检测算法应用较多的有ZBar算法和ZXing算法,但是ZBar算法是基于C语言编写,并且检测效率比ZXing算法高,所以本文采用ZBar算法来实现对QR码的检测定位,ZBar算法的流程如图所示。
    在这里插入图片描述
    ZBar算法的基本流程为首先建立4×4的窗口对图像整体以Z字形进行逐行扫描并均值去噪,根据梯度变换得到每行每列的明暗宽度流;然后判断明暗宽度流是否满足QR码的图案特征,若满足则保存明暗宽度流并设置扫码种类为QR码;根据QR码位置探测图形的黑白比例大约为1:1:3:1:1对明暗宽度流线段进行筛选并聚类之后求出横向和纵向线段的交叉点,进而可以求出QR码的四个顶点坐标。
    求出QR码的四个顶点坐标之后,通过绘制矩形框在图像上显示出QR码的位置信息,并求出矩形框的中心点的像素坐标即为QR码在像素坐标系下的坐标值。

    最终实现结果

    对于简单背景:
    在这里插入图片描述
    对于复杂背景:
    在这里插入图片描述
    可以看出对于简单背景和复杂背景,ZBar算法都能较好地检测出二维码中心点,并能提取出其像素坐标。

    展开全文
  • Zxing二维码识别

    2018-05-11 16:17:43
    Zxing 二维码识别 二维码识别 二维码识别 二维码识别
  • 二维码识别

    2014-08-24 01:49:30
    二维码识别识别技术
  • 识别二维码

    2018-06-30 16:22:39
    选择二维码图片,进行识别二维码,里面包含测试页面和JS源码
  • Android调用摄像头扫描二维码示例 包含长二维码识别 打开本地相册识别二维码 扫描识别 设置手机状态栏颜色
  • 我们在Java开发的时候,发现对二维码识别是不足的。所以我们需要提高识别率。 第一步。识别图片二维码。准备相应的jar包。我们在gradle+idea中开发。 compile group: 'com.google.zxing', name: 'core', ...

    我们在Java开发的时候,发现对二维码的识别是不足的。所以我们需要提高识别率。

    第一步。识别图片二维码。准备相应的jar包。我们在gradle+idea中开发。

    compile group: 'com.google.zxing', name: 'core', version: '3.3.0'
    compile group: 'com.google.zxing', name: 'javase', version: '3.3.0'

    zxing是google提供的生成二维码和识别二维码的jar包。

    第二步:准备QRCodeGenerator 

    
    import com.google.zxing.*;
    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;
    import com.google.zxing.qrcode.QRCodeWriter;
    import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
    import sun.misc.BASE64Decoder;
    
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.IOException;
    import java.nio.file.FileSystems;
    import java.nio.file.Path;
    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.Map;
    
    /**
     * 二维码相关操作
     * Created by hongming.zhao on 2019/11/20.
     */
    public class QRCodeGenerator {
    
        private static final int margin = 0;
        private static final String QR_CODE_IMAGE_PATH = "C:/photo/MyQRCode.png";
    
        private static void generateQRCodeImage(String text, int width, int height, String filePath) throws WriterException, IOException {
            QRCodeWriter qrCodeWriter = new QRCodeWriter();
    
            BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
    
            Path path = FileSystems.getDefault().getPath(filePath);
            MatrixToImageWriter.writeToPath(bitMatrix, "PNG", path);
        }
    
        /**
         * 生成二维码(黑白色)
         * @param text  扫描二维码的内容
         * @param width  宽
         * @param height  长
         * @return
         * @throws Exception
         */
        public static BufferedImage qRCodeCommon(String text, int width, int height)throws Exception{
    
            Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); // 指定编码方式,防止中文乱码
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // 指定纠错等级
            hints.put(EncodeHintType.MARGIN, margin); // 指定二维码四周白色区域大小
            BitMatrix bitMatrix = null;
            try {
                bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, hints);
            } catch (WriterException e) {
                e.printStackTrace();
            }
            return MatrixToImageWriter.toBufferedImage(bitMatrix);
        }
        /**
         * 解析二维码解析,此方法是解析Base64格式二维码图片
         * baseStr:base64字符串,data:image/png;base64开头的
         */
        public static String deEncodeByBase64(String baseStr) {
            String content = null;
            BufferedImage image;
            BASE64Decoder decoder = new BASE64Decoder();
            byte[] b=null;
            try {
                int i = baseStr.indexOf("data:image/png;base64,");
                baseStr = baseStr.substring(i+"data:image/png;base64,".length());//去掉base64图片的data:image/png;base64,部分才能转换为byte[]
    
                b = decoder.decodeBuffer(baseStr);//baseStr转byte[]
                ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(b);//byte[] 转BufferedImage
                image = ImageIO.read(byteArrayInputStream);
                LuminanceSource source = new BufferedImageLuminanceSource(image);
                Binarizer binarizer = new HybridBinarizer(source);
                BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
                Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
                hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
                Result result = new MultiFormatReader().decode(binaryBitmap, hints);//解码
                System.out.println("图片中内容:  ");
                System.out.println("content: " + result.getText());
                content = result.getText();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (NotFoundException e) {
                e.printStackTrace();
            }
            return content;
        }
        /**
         * 解析二维码,此方法解析一个路径的二维码图片
         * path:图片路径
         */
        public static String deEncodeByPath(String path) {
            String content = null;
            BufferedImage image;
            try {
                image = ImageIO.read(new File(path));
                LuminanceSource source = new BufferedImageLuminanceSource(image);
                Binarizer binarizer = new HybridBinarizer(source);
                BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
                Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();
                hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");
                Result result = new MultiFormatReader().decode(binaryBitmap, hints);//解码
                System.out.println("图片中内容:  ");
                System.out.println("content: " + result.getText());
                content = result.getText();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (NotFoundException e) {
                e.printStackTrace();
            }
            return content;
        }
    
        public static void main(String[] args) {
            try {
                //String info="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1575540267760&di=e8b961051b3ab58538e092c5e1be87a1&imgtype=0&src=http%3A%2F%2Fg.hiphotos.baidu.com%2Fzhidao%2Fpic%2Fitem%2Fb8389b504fc2d56263697b8ce51190ef76c66c6a.jpg";
                String info="C:/photo/6.jpg";
                deEncodeByPath(info);
                //generateQRCodeImage("This is my first QR Code", 350, 350, QR_CODE_IMAGE_PATH);
                //qRCodeCommon("This is my first QR Code", 350, 350);
            } catch (Exception e) {
                System.out.println("Could not generate QR Code, WriterException :: " + e.getMessage());
            }
    
        }
    
    
    }
    

    第三步:在controll层中添加

    @ApiOperation(value = "生成的登录二维码",notes = "生成的登录二维码",httpMethod = "GET")
        @RequestMapping(value = "/proCode",method = RequestMethod.GET)
        public void  createQRCode(HttpServletResponse httpServletResponse)throws Exception{
            HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            HttpServletResponse response=((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
            System.out.println("生成二维码!");
            //生成唯一ID
            String uuid = request.getParameter("uuid");
            tokes.add(uuid);
            logger.info("uuid=====>"+uuid);
            //二维码内容,在手机上登录的是一个是否在手机上确认登录的地址(在app内)。
            String url=environment.getProperty("mfw.authority.appAffirmurl");
    
            String encoderContent=url+uuid+"?date="+(new Date()).getTime();
    
            logger.info("perfactUrl====>"+encoderContent);
            ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
            BufferedImage twoDimensionImg = new QRCodeGenerator().qRCodeCommon(encoderContent,350,350);
            ImageIO.write(twoDimensionImg, "jpg", jpegOutputStream);
            response.addHeader("Content-Disposition", "attachment;filename=" + new String((uuid+".jpg").getBytes()));
            byte[] bys = jpegOutputStream.toByteArray();
            response.addHeader("Content-Length", "" + bys.length);
            httpServletResponse.setHeader("Cache-Control", "no-store");
            httpServletResponse.setHeader("Pragma", "no-cache");
            httpServletResponse.setDateHeader("Expires", 0);
            httpServletResponse.setContentType("image/jpeg");
            ServletOutputStream responseOutputStream =
                    httpServletResponse.getOutputStream();
            responseOutputStream.write(bys);
            responseOutputStream.flush();
            responseOutputStream.close();
            websocketModel wm = new websocketModel();
            wm.setType("overdue");
            wm.setUid(uuid);
            myWebSocket.sendInfo(wm,uuid);//向前端发送消息
        }

     

     

     

     

     

     

    参考:提高zxing对二维码的识别率

              zxing 二维码生成深度定制

    展开全文
  • 微信支付二维码不能识别

    千次阅读 2019-06-24 16:51:37
    <div id="pay">...不能识别代码: $('#pay').qrcode({ render : 'table', width : 160, height : 160, text : url }); 把table改canvas后可以识别。。。。 ...
    <div id="pay"></div>
    

    不能识别代码:

    				$('#pay').qrcode({
    					render : 'table',
    					width : 160,
    					height : 160,
    					text : url
    				});

    不能识别二维码

    把table改为canvas后可以识别。。。。

    展开全文
  • zxing二维码生成扫描,识别二维码图片,长按识别二维码调用方便简洁,可选择导入as的modules 只需要在bulid.gradle(app) 中的dependencies :里面 compile project(path: ':BarCode')一下就用。
  • 微信分享二维码到安卓手机不识别

    千次阅读 2018-05-25 14:29:55
    朋友圈图片能够实现长按识别,给微信好友对话框的图片 在 iOS 可以正常识别,但是 Android 端却不能识别为什么?以下引用网友的回答:经过分析和功能对比,android wechat app 中有两种图片浏览方式,图片预览,...
  • qt二维码识别

    2019-04-11 09:11:29
    本例程可以实现二维码识别,条形码识别,但是没有源码,如需下载请谨慎考虑,此应用程序在win运行,可以用于对比二维码识别结果是否正确。
  • 主要介绍了Android平台生成二维码并实现扫描 & 识别功能的相关资料,需要的朋友可以参考下
  • H5扫码特效,可以做二维码识别,银行卡识别,提交给接口

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,970
精华内容 30,388
关键字:

二维码为什么不能识别