Quirc二维码识别模块
背景
师兄要用这个参加集赛,但是说自己C语言不太行,花了一个多小时帮他分析了一下(虽然自己也不太行)。
对应模块的GitHub地址:https://github.com/dlbeer/quirc。
记录一下,一旦以后用到呢。
内容
下载下来的文件主要有demo、tests、lib,由于自己对二维码识别过程不是十分了解,本文主要对demo的一部分进行了分析。
首先是main()函数。这里使用了一系列命令行参数,主要是跑了run_demo()这个函数。

run_demo()这一函数。方框部分主要是错误处理,包含对摄像头初始化和内存分配等出现的问题输出。圆框部分mjpeg()应该是对MJPEG译码器进行初始化,经过循环后释放掉了。所以主要操作还是main_loop()对数据进行了处理

main_loop()前一部分应该主要是转成reg32,然后获取灰度,用于识别二维码信息。方框中主要是将格式转换成rgb32,圆框中应该是获取灰度信息。注意到该部分用到了quirc_begin()和quirc_end(),根据官方说法,这两个函数将灰度图像直接输入了quirc用于图像处理的缓冲区。quirc_begin()返回了一个之前已经分配的buffer的指针,可以通过quirc_count和quirc_extract来找到对应二维码。

quirc_decode()实现译码,在main_loop()中的draw_qr()中。官方示例中quirc_decode()以引用方式传递参数,函数内对data进行的修改直接影响到对应data,译码成功则打印出来。

具体译码实现还未细看,就酱~
Quirc二维码识别模块的更多相关文章
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...
- 有关python下二维码识别用法及识别率对比分析
最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...
- 基于opencv3.0和下的条形码与二维码识别
其中对条码与二维码的识别分为以下4个步骤 1. 利用opencv和Zbar(或者Zxing)对标准的条形码图片(即没有多余背景干扰,且图片没有倾斜)进行解码,将解码信息显示出来,并与原始信息对比. 2 ...
- 第47章 QR-Decoder-OV5640二维码识别—零死角玩转STM32-F429系列
第47章 QR-Decoder-OV5640二维码识别 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.y ...
- 用Arduino玩GM65二维码扫描模块
目录 用Arduino玩GM65二维码扫描模块 用Arduino玩GM65二维码扫描模块 最近在做Capstone,内容是我们之前实验室参加过的工程训练的物流搬运小车,所以现在来复盘一下我使用Ardu ...
- Android二维码识别 开源项目ZXing的编译
Android二维码识别 开源项目ZXing的编译 Android端的条形码/二维码识别功能 因为手机端的输入不是很方便,所以条形码/二维码的扫描是一种很有效的解决手段. 比较流行的手机应用中,常用的 ...
- 实例源码--ZXing识别条形码和二维码识别源码
下载源码 技术要点: 1.ZXing库的 使用 2.识别条形码和二 维码 3.自定义视图 4.源码带有非常详 细的中文注释 ...... 详细介绍: 1.ZXing库 ZXing是个很经典的条码/ ...
- Python zxing 库解析(条形码二维码识别)
各种扫码软件 最近要做个二维码识别的项目,查到二维码识别有好多开源的不开源的软件 http://www.oschina.net/project/tag/238/ Zbar 首先试了一下Zbar,pyt ...
- android 图片二维码识别和保存(二)
续上一篇,开发图片二维码识别功能后,我们对功能进行性能分析内存占用显著提高了,不使用该功能内存占用大约是147M,使用这个功能多次以后,高达203M. 因此对功能进行研究,发现每次生成的图片没有即时的 ...
随机推荐
- day57 Pyhton 前端Jquery09
内容回顾: - 筛选选择器 $('li:eq(1)') 查找匹配的元素 $('li:first') $('li:last') - 属性选择器 - 筛选的方法 - find() 查找后代的元素 - ...
- go http爬虫
1 package main import ( "fmt" "io/ioutil" "net/http" ) func main() { r ...
- canal 配置 多个监听 推送到不同mq
canal整合rabbitmq 见上篇 如果想监听不同库 不同表到不同队列如何操作 1. vim canal.properties canal.destinations = route1,route ...
- __getattr__和__setattr__
getattr 拦截运算(obj.xx),对没有定义的属性名和实例,会用属性名作为字符串调用这个方法 class F(object): def __init__(self): self.name = ...
- matplotlib作图 归零编码、曼切斯特编码、非归零编码、差分曼切斯特编码
效果图 代码 import matplotlib.pyplot as plt config = { 'color': 'black', 'lw': 5, } def init(): plt.figur ...
- 2018HUAS_ACM暑假比赛5题解
目录 Problem A Problem B Problem C Problem D Problem E Problem F Problem A 思路 这是一道带权并查集问题 因为只有三种种类,我们分 ...
- APP打开(一)—以亲身经历谈APP注册登录
如果不是自己接手过这样的产品,我可能也很难相信,会有公司能够做出十四个注册页面的APP,将选站点.输账号.输密码.用户协议.用户权限等全部拆解成一个一个单独的页面来做,用户在注册的时候仿佛在攀登一座云 ...
- 超简单集成HMS ML Kit文字超分能力,一键提升文本分辨率
前言 大家有没有遇到过这种情况,在浏览微博或者公众号时看到一段有趣的文字,于是截图发到朋友圈想和好友分享.但是在发布图片时,软件会对图片强制进行压缩,导致图片分辨率下降,文字变得模糊难以阅读.那么有没 ...
- tomcat在eclipse里部署
先下载安装包,解压缩,运行安装文件(端口:8080,下一步 指定jdk安装路径,记住tomcat的安装位置) 安装程序的位置 和 安装后的位置不一样 ...
- 装java开发环境 报client/jvm.dll找不到
jdk安装成功,明明有jvm.dll就是找不到,导致eclipse打不开.此时eclipse为64位,jdk为32位:查了好多方法,不起作用.最后将jdk换位64位问题解决. 所以,一般64位的系统建 ...