扫码识别

QR码

QR码是二维条码的一种,快速响应码,常用于产品标识。
优点:信息容量大,印刷面积小,兼容汉字与假名,抗污损,360度可读,结构可附加。
QR 码的最小元素(黑色或白色方块)被称为“模块”。
组成:QR 码是由黑色和白色模块、位置探测图案、时间图案、包含纠错级别和掩码编号的格式信息、数据区域以及纠错代码(Reed-Solomon 码)组合而成。
http://cli.im/ 可以用草料二维码生成你想要的内容。

image.find_qrcodes([roi])

1.查找 roi 内的所有二维码并返回一个 image.qrcode 对象的列表。

2.为使这一方法成功运行,图像上二维码需比较平展。

通过使用 sensor.set_windowing 函数在镜头中心放大、 image.lens_corr 函数来消解镜头的桶形畸变或通过更换视野较为狭小的镜头, 可得到一个不受镜头畸变影响的更为平展的二维码。如需要,也可使用无畸变镜头。

img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.

3.roi 是一个用以复制的矩形的感兴趣区域(x, y, w, h)。如果未指定,ROI即整幅图像的图像矩形。 操作范围仅限于 roi 区域内的像素。

4.不支持压缩图像和bayer图像。

5.此方法在OpenMV Cam M4 上不可用。

例程:

import sensor, image
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA) # can be QVGA on M7...
sensor.skip_frames(30)
sensor.set_auto_gain(False) # must turn this off to prevent image washout...
while(True):img = sensor.snapshot()img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.for code in img.find_qrcodes():print(code)

注:but,我的输出没有qrcodes,也就是对应的网址。
预估是晚上有反光,毕竟是二维的。

条形码

条形码需要640*80以上的分辨率,一般都是取其最有效的payload,也就是二维码下面对应的数字。

image.find_barcodes([roi])

1.查找 roi 内所有一维条形码并返回一个 image.barcode 对象列表。

2.为了获得最佳效果,使用长640、宽40/80/160窗口
垂直程度越低,运行速度越快。由于条形码是线性一维图像,所以只需在一个方向上有较高分辨率, 而在另一方向上只需较低分辨率。

注意:该函数进行水平和垂直扫描,所以可使用宽40/80/160、长480的窗口。
最后,一定调整镜头,这样条形码会定位在焦距产生最清晰图像的地方。模糊条码无法被解码。

3.该函数支持所有一维条形码:

image.EAN2
image.EAN5
image.EAN8
image.UPCE
image.ISBN10
image.UPCA
image.EAN13
image.ISBN13
image.I25
image.DATABAR (RSS-14)
image.DATABAR_EXP (RSS-Expanded)
image.CODABAR
image.CODE39
image.PDF417
image.CODE93
image.CODE128
4.roi 是一个用以复制的矩形的感兴趣区域(x, y, w, h)。如果未指定,ROI即整幅图像的图像矩形。操作范围仅限于 roi 区域内的像素。

5.不支持压缩图像和bayer图像。

6.此方法在OpenMV Cam M4 上不可用。

7.barcode.corners()
返回一个由该对象的**四个角组成的四个元组(x,y)**的列表。四个角通常是按照从左上角开始沿顺时针顺序返回的。

barcode.rect()
返回一个矩形元组(x, y, w, h),用于如数据矩阵的边界框的 image.draw_rectangle 等其他的 image 方法。

barcode.x()
返回条形码的边界框的x坐标(int)。索引 [0]

barcode.y()
返回条形码的边界框的y坐标(int)。索引 [1]

barcode.w()
返回条形码的边界框的w宽度(int)。索引 [2]

barcode.h()
返回条形码的边界框的h高度(int)。索引 [3]

barcode.payload()
返回条形码的有效载荷的字符串。例:数量。索引 [4]

barcode.type()
返回条形码的列举类型 (int)。索引 [5]

image.EAN2
image.EAN5
image.EAN8
image.UPCE
image.ISBN10
image.UPCA
image.EAN13
image.ISBN13
image.I25
image.DATABAR
image.DATABAR_EXP
image.CODABAR
image.CODE39
image.PDF417 - 未来启用 (e.g. 现在还不能正常使用).
image.CODE93
image.CODE128

barcode.rotation()
返回以弧度计的条形码的旋度(浮点数)。索引 [6]

barcode.quality()
返回条形码在图像中被检测到的次数(int)。索引 [7]

扫描条形码时,每一条新的扫描线都能解码相同的条形码。每次进行这一过程,条形码的值都会随之增加。

Data Matrix

注:此例程也未实现,和QR码一个问题。

Data Matrix二维条码是一种矩阵式二维条码。有国际标准。其尺寸可以依需求印成不同大小,但采用的错误纠正码应与尺寸配合,由于其演算法较为容易,且尺寸较有弹性,故一般以ECC200较为普遍。

Data Matrix(ECC200)码结构

Data Matrix 码的数据区域四周为 L 形框(称为“对准图案”)和点线(称为“时钟图案”)。
读取器将捕获这些图案,通过图像处理技术确定代码的位置。因此,可从任何方向上读取 Data Matrix 码。

当模块数目超过 24 × 24 时,代码将分成区块,每侧不会超过 24 个模块。此结构可防止代码失真。共有 24 种代码尺寸,范围为从 10 × 10 模块到 144 × 144 模块(对于矩形,共有六种尺寸)。

当某个代码的模块数目超过 26 × 26(对于数据,模块数目超过 24 × 24)时,它会划分为区块,如下所示,每侧不超过 24 个模块。

此结构可防止代码失真。

比较几种二维码

可根据需求度使用。

这里需要先补充一下PDF417二维条码,这是一种堆叠式二维条码,目前应用最为广泛(虽然我没怎么见过)。PDF意思是“便携数据文件”。组成条码的每一个条码字符由4个条和4个空共17个模块构成,故称为PDF417条码。

PDF417二维条码优点

1.信息容量大 ,除可以表示字母、数字、ASCII字符外,还能表达二进制数。

2.错误纠正能力 ,一维条码通常具有校验功能以防止错读,一旦条码发生污损将被拒读。
而二维条码不仅能防止错误,而且能纠正错误,即使条码部分损坏,也能将正确的信息还原出来。

3.印制要求不高 ,普通打印设备均可打印,传真件也能阅读。

4.尺寸可调,以适应不同的打印空间
码制公开已形成国际标准,我国也已制定了417码的国标。

OpenMV图像处理的方法4相关推荐

  1. Openmv(一)OpenMV图像处理的基本方法

    一.图像处理基础知识 摄像头:光学信号转换成电信号.计算机视觉中,最简单的模型是小孔成像模型. 小孔成像是一种理想模型,实际镜头会存在场曲和畸变等,但可以通过在标定过程中引入畸变参数解决,仍可广泛使用 ...

  2. 激光SLAM-地图边界噪点的处理(地图的美化)--图像处理的方法

    激光SLAM-地图边界噪点的处理(地图的美化)--图像处理的方法 问题介绍 实现步骤 代码实现 效果 参考文章 问题介绍 本问是实际扫地机器人对于2D激光SLAM采用cartographer所建的地图 ...

  3. java 影像处理_java图像处理的方法

    java图像处理的方法 项目需要调整图片服务器的解决方案,这次调整使用fastdfs存储小文件,也就是图片,因为现在还没有fastdfs的.net版的客服端,所以理所当然把处理图片放到了java这块, ...

  4. 图像处理基本方法-c语言生成纯色BMP文件

    图像处理基本方法-C语言生成纯色BMP文件 1.目的 我们有时需要产生各种各样的纯色图片,于是设计了这个简单的基本的图像处理小程序. 本文主要实现基本的BMP图片数据的生成过程,并保存为Windows ...

  5. 图像处理基本方法-c语言调用opencv实现人脸检测功能

    图像处理基本方法-c语言调用opencv-实现BMP图片中人脸检测功能 使用opencv检测bmp图片中人脸,主要使用cvHaarDetectObjects函数实现. 函数定义 CvSeq* cvHa ...

  6. matlab处理数字岩心图像,一种用神经网络进行高质量数字岩心图像处理的方法与流程...

    所属技术领域 本创发明涉及ct图像处理领域和神经网络领域,特别涉及边缘检测技术和bp神经网络,通过二值图像来研发一种新的边缘检测算子来减小边缘监测图像的误差,从而使bp神经网络预测的边缘图像更加准确. ...

  7. 图像处理去噪方法的c语言实验,基于一阶前向后向算法的全变分图像去噪方法与流程...

    本发明涉及图像处理技术领域,具体涉及一种基于一阶前向后向算法的全变分图像去噪方法. 背景技术: 图像复原(imagerestoration)即利用退化过程的先验知识,去恢复已被退化图像的本来面目.图像 ...

  8. 使用游戏角色娜可露露讲述Python图像处理的方法(matplotlib、PIL和OpenCV)

      Python中除了使用OpenCV以外,使用matplotlib和PIL这两个模块,也可以对图像进行处理. 一.matplotlib 1. 显示图片 import matplotlib.pyplo ...

  9. 利用C语言实现计算机图像处理的方法

    1.图像平移 图像平移只是改变图像在屏幕上的位置,图像本身并不发生变化. 假设原图像区域左上角坐标为(x0, y0),右下角坐标为(x1, y1),将图像分别沿x和y轴平移dx和dy,则新图像的左上角 ...

最新文章

  1. C# 写Windows服务
  2. C++检查给定数字是否为4的幂的算法实现(附完整源码)
  3. Java 9中的HTTP / 2支持简介
  4. FIle类和递归方法的使用
  5. 华为方舟编译器是黑科技?
  6. C++线程中的几类锁
  7. 游戏开发流程及QA职责
  8. a标签下载文件 自定义下载文件名
  9. BP神经网络算法基本原理,BP神经网络计算过程
  10. 嗖嗖移动营业大厅(Java面向对象编程)
  11. 万能弹窗代码,能突破大部分弹窗拦截插件
  12. nginx.conf中的fastcgi_pass
  13. ns3网络模拟器使用相关问题
  14. 抖音关闭单身开启恋爱模式设置教程分享
  15. 笔记本无法找到WiFi信号,需要手动设置wlan autoconfig的解决办法
  16. streamsets下载需要注册
  17. 牛客SQL练习-52-获取Employees中的first_name,查询按照first_name最后两个字母,按照升序进行排列
  18. 计算机考研和leetcode难度,2021计算机考研真题难度解析
  19. 汽车导航--安装方法
  20. 输入一个整数,判断是不是质数?

热门文章

  1. 每天十道面试题(六)
  2. 如何将mp3转换成html文件,如何利用格式工厂将视频转音频?视频格式转换成MP3的方法...
  3. python时间戳转换字符串_在Python中如何将时间戳转换成字符串
  4. Python字符串与时间相互转换
  5. 计算机视频线接口,四大常用视频接口对比,你的电脑是哪种接口?
  6. 计算机结构化思维学计算机,3岁学编程,原来可以从结构化程序设计思维开始(二)...
  7. 二、动画- animation动画
  8. c语言 两个case连在一起,嵌入式C语言 2选择结构 SWITCH CASE
  9. cisco无线配置:AIR-AP1242G-E-K9修复与设置手册
  10. 记武汉西山居技术美术实习生面经