OpenMV学习笔记4——二维码识别

一、示例程序

按照下图顺序点击,即可打开官方在IDE中准备好的二维码实例程序:

python 复制代码
# QRCode Example
#
# This example shows the power of the OpenMV Cam to detect QR Codes
# using lens correction (see the qrcodes_with_lens_corr.py script for higher performance).

import sensor
import time

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)
sensor.set_auto_gain(False)  # must turn this off to prevent image washout...
clock = time.clock()

while True:
    clock.tick()
    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():
        img.draw_rectangle(code.rect(), color=(255, 0, 0))
        print(code)
    print(clock.fps())

二、代码讲解

上来依旧是老三样:导入依赖的包、初始化摄像头、设置像素模式即图像大小。

在本例中,自动增益也是需要关闭的,防止图像变形。

在主函数中,我们依然是将捕获到的图像命名为img,"lmg.lens_corr"是执行镜头矫正,防止图像变形影响识别结果。函数原型为"img.lens_corr(strength=1.8\[,zoom=1.0\[,x_corr=0.0\[,y_corr=0.0]]])",

  • "strength"是浮点数,代表了镜头矫正的强度,一般尝试1.8,并不断进行调整,直到图像看起来不错。
  • "zoom"是要缩放图像大小,默认1.0。
  • "x_corr"是像素中心偏移量,可以是正数与可以是负数。"y_corr"同理。

"img.find_qrcodes()"函数是在规定区域内寻找二维码,函数原型为"img.find_qrcodes(roi)"

  • 查找指定roi区域内的所有QRcode并返回一个image列表。要求图像相对平坦,此时我们上一个介绍的函数便起了作用。
  • roi是感兴趣矩形元组(x,y,w,h),如果没有指定,默认在捕获到的整体图像上寻找。

之后便是在寻找到的图像上画框,并将捕获到的"code"对象打印出来。

运行效果如下:

可以看到,在命令窗口,除了显示每秒的帧率外,还有捕获到的二维码信息:

{"x":81, "y":17, "w":195, "h":195, "payload":"Hello World!", "version":2, "ecc_level":2, "mask":0, "data_type":4, "eci":0}

相关推荐
高级程序源8 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
WeiXin_DZbishe8 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
kimnoic8 小时前
Python数据库学习心得:SQLite、MySQL、PostgreSQL优缺点
开发语言·python
snhna9 小时前
向量数据库深度实战:从 HNSW 到 pgvector、Milvus 选型与 RAG 落地
数据库·人工智能·python·postgresql·milvus
别动我齐刘海9 小时前
C++ 工程化学习
java·linux·前端·c++·学习·机器学习·机器人
必须得开心呀9 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
Wx-bishekaifayuan9 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
青少儿编程课堂10 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
志尊宝10 小时前
Vue3 零基础每日笔记(071):暗黑模式与主题切换——CSS 变量 + Element Plus 暗黑方案
前端·css·笔记·vue·html·前端开发·软件开发
计算机编程指导师10 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通