我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于OpenMV如何实现数字识别功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于OpenMV如何实现数字识别功能

这篇文章主要介绍基于OpenMV如何实现数字识别功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

    基于OpenMV的图像识别

    OpenMV简介

    什么是OpenMV

    OpenMV是由美国克里斯团队基于MicroPython发起的开源机器视觉项目,目的是创建低成本,可扩展,使用python驱动的机器视觉模块。OpenMV搭载了MicroPython解释器,使其可以在嵌入式端进行python开发,关于MicroPython可以参照我之前的博客专栏:MicroPython. OpenMV基于32位,ARM Cortex-M7内核的OpenMV-H7, 并结合各种摄像头,可以进行多种机器视觉应用的实现,比如人脸检测,物体分类等。

    OpenMV是一个开源,低成本,功能强大的机器视觉模块,以STM32F427CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法,提供Python编程接口 。同时 OpenMV也是一个可编程的摄像头,通过Python语言可实现你想要的逻辑。而且摄像头本身也内置了一些图像处理的算法,使用起来也更加的方便,仅需要写一些简单的Python代码,即可轻松的完成各种机器视觉相关的任务。在此,我们通过OpenMV实现了数字识别。

    在打开OpenMV摄像头链接电脑时,会弹出让你升级的窗口

    这时切忌一定要选择Cancel键,

    不能选择升级!!!

    不能选择升级!!!

    不能选择升级!!!

    基于OpenMV如何实现数字识别功能

    然后在进行下一步的操作

    OpenMV中文入门视频教程

    一、数字识别

    数字识别的基础是需要配置使用NCC模板匹配。通过NCC模板的匹配可把

    需要识别的数字模板图片保存到SD卡中,然后可进行下一步的识别。

    可以通过打开模板匹配的历程来直接打开代码进行使用

    基于OpenMV如何实现数字识别功能

    基于OpenMV如何实现数字识别功能

    如果运行出现这个窗口就说明没有保存模板图片

    基于OpenMV如何实现数字识别功能

    所以这时就需要创建一个模板图片:创建模板图片的详细视频教程

    创建一个模板图片首先要打开一个helloworld历程文件

    基于OpenMV如何实现数字识别功能

    基于OpenMV如何实现数字识别功能

    然后在helloworld历程文件中进行匹配0~9这样的基本数字,对这些数字进

    行一一截取,用它们来作为我们的模板图片。

    在右边的Frame Buffer框中进行截取,注意:不要点Zoom,因为Zoom展示

    的是放大后的效果,在识别时可能会导致失帧。

    然后点击左键选出一个框(如图所示)

    基于OpenMV如何实现数字识别功能

    选完框后点击右键选择Save Image selection to PC

    基于OpenMV如何实现数字识别功能

    最后把截取的数字图片进行保存,一定要保存到OpenMV的SD卡中,保存的文件名可自己

    定义

    基于OpenMV如何实现数字识别功能

    把template.pgm改为你创建的模板图片的名称

    基于OpenMV如何实现数字识别功能

    (注意:模板图片的格式一定要是pgm的格式,转换格式可以在

    https://convertio.co/zh/bmp-pgm/网站直接进行转换)

    改完之后就可以运行

    下面展示一些 有关数字识别的代码。

    此代码为源代码,可根据自己的需求在上面进行改动。

    代码来源:数字识别代码,可直接引用并修改

    # Template Matching Example - Normalized Cross Correlation (NCC)## This example shows off how to use the NCC feature of your OpenMV Cam to match# image patches to parts of an image... expect for extremely controlled enviorments# NCC is not all to useful.## WARNING: NCC supports needs to be reworked! As of right now this feature needs# a lot of work to be made into somethin useful. This script will reamin to show# that the functionality exists, but, in its current state is inadequate.import time, sensor, imagefrom image import SEARCH_EX, SEARCH_DS# Reset sensorsensor.reset()# Set sensor settingssensor.set_contrast(1)sensor.set_gainceiling(16)# Max resolution for template matching with SEARCH_EX is QQVGAsensor.set_framesize(sensor.QQVGA)# You can set windowing to reduce the search image.#sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60))sensor.set_pixformat(sensor.GRAYSCALE)# Load template.# Template should be a small (eg. 32x32 pixels) grayscale image.template8 = image.Image("/8.pgm")template9 = image.Image("/9.pgm")clock = time.clock()# Run template matchingwhile (True):    clock.tick()    img = sensor.snapshot()    # find_template(template, threshold, [roi, step, search])    # ROI: The region of interest tuple (x, y, w, h).    # Step: The loop step used (y+=step, x+=step) use a bigger step to make it faster.    # Search is either image.SEARCH_EX for exhaustive search or image.SEARCH_DS for diamond search    #    # Note1: ROI has to be smaller than the image and bigger than the template.    # Note2: In diamond search, step and ROI are both ignored.    r 8= img.find_template(template8, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))    if r8:        img.draw_rectangle(r8)   r 9= img.find_template(template9, 0.70, step=4, search=SEARCH_EX) #, roi=(10, 0, 60, 60))    if r9:        img.draw_rectangle(r9)    print(clock.fps())

    运行的结果如图所示

    基于OpenMV如何实现数字识别功能

    以上是“基于OpenMV如何实现数字识别功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    基于OpenMV如何实现数字识别功能

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    基于OpenMV如何实现数字识别功能

    这篇文章主要介绍基于OpenMV如何实现数字识别功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基于OpenMV的图像识别OpenMV简介什么是OpenMVOpenMV是由美国克里斯团队基于MicroPython发
    2023-06-25

    php如何实现识别错别字功能

    本篇内容主要讲解“php如何实现识别错别字功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现识别错别字功能”吧!首先,PHP内置了一些字符串操作函数,其中就包括字符替换函数。我们可
    2023-07-05

    基于C#怎么实现语音识别功能

    今天小编给大家分享一下基于C#怎么实现语音识别功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在.NET4.0中,我可以借
    2023-06-30

    基于tensorflow实现Android手写数字识别

    前段时间训练了mnist手写数字识别的模型,学习后将其移植到Android端 我是参考的大佬https://puke3615.github.io/2017/08/02/Run-Mnist-On-Android/,https://github
    2022-06-06

    Python中如何实现MNIST手写数字识别功能

    这篇文章主要为大家展示了“Python中如何实现MNIST手写数字识别功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中如何实现MNIST手写数字识别功能”这篇文章吧。数据集介绍M
    2023-06-22

    基于Python的人脸识别功能怎么实现

    这篇文章主要介绍“基于Python的人脸识别功能怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Python的人脸识别功能怎么实现”文章能帮助大家解决问题。一、 人脸检测人脸检测是指从图像
    2023-07-05

    基于Tensorflow的图像识别功能怎么实现

    要实现基于Tensorflow的图像识别功能,可以按照以下步骤进行:准备数据集:首先需要准备包含标记好的图像数据集,这些数据将用于训练模型和测试模型的准确性。构建模型:使用Tensorflow构建一个卷积神经网络(CNN)模型,CNN是图像
    基于Tensorflow的图像识别功能怎么实现
    2024-04-03

    Android实现扫一扫识别数字功能

    1.准备工作 首先实现识别数字等字符,我们要知道需要采用OCR (Optical Character Recognition,光学字符识别)来实现。而tesseract是非常不错的开源OCR工具,但是要在Android中直接使用可能要费点
    2023-05-30

    基于face_recognition如何实现人脸识别

    这篇文章将为大家详细讲解有关基于face_recognition如何实现人脸识别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。准备工作我们的人脸识别基于face_recognition库。f
    2023-06-17

    C#OCR实现文字识别功能

    OCR,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。本文将利用OCR实现文字识别功能,感兴趣的可以了解一下
    2022-11-21

    Android基于ArcSoft如何实现人脸识别

    小编给大家分享一下Android基于ArcSoft如何实现人脸识别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、在虹软的开发者中心创建一个自己的应用,将APP
    2023-06-22

    Unity如何实现语音识别功能

    小编给大家分享一下Unity如何实现语音识别功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!现在语音识别已经被广泛的应用到各个领域中,在Unity开发中,语音识
    2023-06-15

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录