2021电赛F题之openmv数字识别--更新(附带视频与代码)

简介: 2021电赛F题之openmv数字识别--更新(附带视频与代码)

成果展示

常见出错解决方法

openmv数字识别源代码—gitee

成果展示中的视频对应的源码就是上面Gitee链接里面的代码。

最新版openmv和k210的代码也已经编写完毕,你可以通过给我的Github项目点赞来免费的向我获取代码,联系我时请带上备注以及点赞Github项目后的截图。

如果是对代码有问题以及不知道如何使用的,可以先好好读一下代码的结构并且进行大致的流程梳理后再联系我,谢谢。

Github项目地址

效果如上

openmv的u盘里需要

思路:

模板匹配很简单,只不过使用起来需要自己拍摄大量的模板,同时如果模板数量较多那么就会造成严重的画面延迟,所以需要代码的结构较为严谨,同时需要运用一些算法来优化代码,

下面只是简单的官方历程,如果需要视频中的效果,那么需要自己拍摄模板也需要自己优化代码结构哦.

需要注意的是,如果想要提高帧率,那么这一次进行匹配的模板的数量就必须要少,在模板数量少的情况下还想能匹配的上就需要较好的模板了.

同时也可以适当降低匹配图片的阈值要求,一般设定为0.5到0.7.

下面的这份代码就是官方的源代码

但是说到底我们的模板不可能只有一张,如果是那样那么识别率也太低了对吧。

import time, sensor, image
from image import SEARCH_EX, SEARCH_DS
#重启传感器
sensor.reset()
#传感器配置
sensor.set_contrast(1)
sensor.set_gainceiling(16)
sensor.set_framesize(sensor.QQVGA)  #由于运算量较大,因此只能使用QQVGA
#可以通过设置窗口来减少搜索的图像
#sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60))
sensor.set_pixformat(sensor.GRAYSCALE)#黑白
#加载模板
#模板应该是一个小的灰度图像,如32×32.
template = image.Image("/1.pgm")#模板库 要求图片格式为pgm 需要下载到sd卡中
clock = time.clock()
#运行模板匹配
#查找模板(模板、阈值、[roi、步骤、搜索])
#ROI:感兴趣的区域元组(x,y,w,h)。
#步骤:使用的循环步骤(y+=步骤,x+=步骤)使用更大的步骤使其更快。
#搜索可以是image.Search\u EX进行穷举搜索,也可以是image.Search\u DS进行菱形搜索
#注1:ROI必须小于图像且大于模板。
#注2:在菱形搜索中,step和ROI都被忽略。
while (True):
    clock.tick()
    img = sensor.snapshot()# 获取当前帧
   # roi=(0, 0, 400, 400) #设置感兴趣区域
    r = img.find_template(template, 0.70, step=4, search=SEARCH_EX) 
    #, roi=(10, 0, 60, 60)) #设置感兴趣区域
    if r:  #如果找到模板图片旧框选出来
        img.draw_rectangle(r)
    print(clock.fps())
// 2499067858

因此我们就得像个办法再增加模板的同时,还不降低帧率。

以openmv的性能,大概6-8张模板是能接受的,再多就会掉帧了

所以我们可以再执行find_template的时候进行for循环,让他去遍历一个list集合,遍历其中的模板,这样子我们就能尽可能提高对同一数字的识别率了.

也就是我们可以把代码改进为下面这种

import time, sensor, image
from image import SEARCH_EX, SEARCH_DS
#重启传感器
sensor.reset()
#传感器配置
sensor.set_contrast(1)
sensor.set_gainceiling(16)
sensor.set_framesize(sensor.QQVGA)  #由于运算量较大,因此只能使用QQVGA
#可以通过设置窗口来减少搜索的图像
#sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60))
sensor.set_pixformat(sensor.GRAYSCALE)#黑白
#加载模板
#模板应该是一个小的灰度图像,如32×32.
list = ["/1.pgm", "/2.pgm", "/3.pgm", "/4.pgm","/5.pgm", "/6.pgm", "/7.pgm", "/8.pgm"]
template = [0,0,0,0,0,0,0,0]
def loadimg():
  t=0
  for i in list:
    template[t] = image.Image("i")#模板库 要求图片格式为pgm 需要下载到sd卡中
    t+=1
  return template
clock = time.clock()
#运行模板匹配
#查找模板(模板、阈值、[roi、步骤、搜索])
#ROI:感兴趣的区域元组(x,y,w,h)。
#步骤:使用的循环步骤(y+=步骤,x+=步骤)使用更大的步骤使其更快。
#搜索可以是image.Search\u EX进行穷举搜索,也可以是image.Search\u DS进行菱形搜索
#注1:ROI必须小于图像且大于模板。
#注2:在菱形搜索中,step和ROI都被忽略。
template = loadimg()
while (True):
    clock.tick()
    img = sensor.snapshot()# 获取当前帧
   # roi=(0, 0, 400, 400) #设置感兴趣区域
   for i in template:
      r = img.find_template(i, 0.70, step=4, search=SEARCH_EX) 
    #, roi=(10, 0, 60, 60)) #设置感兴趣区域
    if r:  #如果找到模板图片旧框选出来
        img.draw_rectangle(r)
    print(clock.fps())

这样子我们就能做到一次性遍历好多张图片了,之后如果还想优化,你就可以根据比赛的题目进行适当的操作了

(这个代码不是用ide写的,是手撸的,所以可能直接复制会有语法上的报错,可以自己改一改哈)



相关文章
|
6月前
|
算法 计算机视觉
图像去雨-雨线清除-图像处理-(计算机作业附代码)
图像去雨-雨线清除-图像处理-(计算机作业附代码)
|
1月前
|
数据采集 机器学习/深度学习 数据挖掘
数据也需SPA?Python转换大法,给你的数据做个全身放松SPA!
【10月更文挑战第4天】在数字化时代,数据犹如企业的血液,贯穿于各项业务之中。就像人需要定期SPA恢复活力,数据也需要“转换大法”来优化结构和提升质量,从而更好地支持决策分析与机器学习。本文探讨了如何使用Python进行数据SPA,包括理解需求、数据清洗、格式转换及聚合分析等步骤。通过Python强大的Pandas库,我们可以轻松完成缺失值填充、重复记录删除等任务,并实现数据格式的标准化,确保数据更加整洁、有序,助力高效分析与决策。为企业数据注入新的活力,迎接更多挑战。
24 1
|
2月前
|
数据处理 开发者 异构计算
ComfyUI+多模态LLM--手搓一个好用的视频/图片提示词反推器
今天我们把ComfyUI工具和多模态LLM结合,在魔搭的免费算力上搭建出支持单图理解,多图理解,视频理解的WebUI界面,更好的支持开发者快速搭建一个视频/图片页面打标器。
ComfyUI+多模态LLM--手搓一个好用的视频/图片提示词反推器
|
3月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
3月前
|
人工智能 算法
你试过一秒钟出现在世界各地的感觉吗?使用一键人像抠图换背景,让你拥有任意门
准备人像与背景图,访问ModelScope一键抠图换背景工具。上传人像至位置1,背景至位置2。点击按钮稍候,AI快速生成新图,将人像无缝融合至新背景中。体验高效便捷,算法智能精准,边缘处理细腻无痕,支持多样背景选择,输出质量高,适合多种应用场景。
|
6月前
|
计算机视觉
我的自描外挂制作日志——FPS类游戏的自瞄【验证猜想】
我的自描外挂制作日志——FPS类游戏的自瞄【验证猜想】
74 1
2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV
2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV
210 0
|
编解码 监控 安全
红外成像仪开发版学习注意要点
三河凡科科技飞讯红外成像仪开发学习注意要点 红外成像仪主要用于检测和识别物体的热量,并将其转化为可见的图像。它可以用于许多应用,包括夜视、安全监控、军事、医疗和工业控制等领域。在开发红外成像仪时需要注意以下几个要点。
红外成像仪开发版学习注意要点
|
计算机视觉 C++
OpenCV-用图像处理作出素描图(给你的另一半试试吧)
OpenCV-用图像处理作出素描图(给你的另一半试试吧)
|
人工智能 API 数据安全/隐私保护
Python3,5行代码,Chatxxx能对PDF文件进行旋转、提取、合并等一系列操作,看了这篇,80岁老奶奶走路都不扶墙了。
Python3,5行代码,Chatxxx能对PDF文件进行旋转、提取、合并等一系列操作,看了这篇,80岁老奶奶走路都不扶墙了。
101 0