5.28OpenMV入门

10分钟快速上手 · OpenMV中文入门教程

使用的元件

先安装好,上述链接上手

IDE显示颜色阈值,同时也配有示例文件,如下图打开,helloworld 你好,世界! · OpenMV中文入门教程,在官方也有每一个的详细解析

OpenMV的一些依赖如下,进行import引入

以下是我个人学习过程的一些摘录

目录

一、背景知识 

二、能干啥,要干啥

1. 图像捕捉

2. 颜色跟踪

3. 人脸检测

4. 二维码识别

其他功能

 三、慢慢上手-图像处理方法

1.感光元件

2.基本方法 

3.统计图像信息

4.画图 


一、背景知识 

 

 

(下文就有用到这个LAB) 

 

二、能干啥,要干啥

2. 关于OpenMV 和 OpenCV
OpenMV是 开源的机器视觉框架,而 OpenMV 是一种 开源计算机视觉库,两者都是实现视觉应用的工具,不同的是 OpenMV 可以运行在 MCU 上,而OpenCV可以运行在多种框架的 CPU上,OpenMV的优势在于轻量化,但是处理高复杂图形信息和告诉图像能力的时候明显弱于OpenCV

以下是OpenMV开发板的一些基本功能的详细说明,包括图像捕捉、颜色跟踪、人脸检测和二维码识别等:

1. 图像捕捉

OpenMV开发板配备了一个摄像头模块,可以捕捉静态图像和视频帧。

  • 静态图像捕捉:可以使用sensor.snapshot()函数来捕捉当前视野的图像,并将其保存到SD卡或传输到计算机。
  • 视频流捕捉:可以连续捕捉视频帧,并在处理后显示或保存。
import sensor, image, time

sensor.reset()                      # 初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 设置像素格式为RGB565
sensor.set_framesize(sensor.QVGA)   # 设置分辨率为QVGA (320x240)
sensor.skip_frames(time = 2000)     # 让摄像头稳定2秒

while(True):
    img = sensor.snapshot()         # 捕捉图像
    # 这里可以对图像进行处理

2. 颜色跟踪

颜色跟踪是通过检测和跟踪图像中的特定颜色区域来实现的。

  • 颜色阈值设置:通过设置HSV(色调、饱和度、亮度)或RGB颜色空间的阈值来定义要跟踪的颜色。
  • 检测颜色区域:使用find_blobs()函数检测图像中的颜色块。
import sensor, image, time

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)

# 定义红色的阈值范围
red_threshold = (30, 100, 15, 127, 15, 127)

while(True):
    img = sensor.snapshot()
    blobs = img.find_blobs([red_threshold])
    for blob in blobs:
        img.draw_rectangle(blob.rect())
        img.draw_cross(blob.cx(), blob.cy())

3. 人脸检测

OpenMV开发板支持基于Haar特征的级联分类器进行人脸检测。

  • 加载人脸检测模型:使用预训练的Haar特征模型进行检测。
  • 检测人脸:使用find_features()函数检测图像中的人脸。
import sensor, image, time, pyb

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE) # 人脸检测通常在灰度图像上进行
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)

# 加载Haar特征分类器模型
face_cascade = image.HaarCascade("frontalface", stages=25)

while(True):
    img = sensor.snapshot()
    faces = img.find_features(face_cascade, threshold=0.75, scale_factor=1.25)
    for face in faces:
        img.draw_rectangle(face)

4. 二维码识别

OpenMV开发板支持检测和解码图像中的二维码。

  • 检测二维码:使用find_qrcodes()函数检测并解码图像中的二维码。
import sensor, image, time

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE) # 二维码识别通常在灰度图像上进行
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)

while(True):
    img = sensor.snapshot()
    qrcodes = img.find_qrcodes()
    for qrcode in qrcodes:
        img.draw_rectangle(qrcode.rect())
        print(qrcode.payload()) # 打印二维码的内容

其他功能

OpenMV开发板还支持许多其他功能,如边缘检测、条形码识别、光流跟踪、机器学习等。每种功能都有对应的API,可以通过阅读官方文档和示例代码来学习和使用这些功能。

  • OpenMV官方文档
  • OpenMV社区论坛

 三、慢慢上手-图像处理方法

基本方法 · OpenMV中文入门教程

还得是官网

1.感光元件

感光元件 · OpenMV中文入门教程

2.基本方法 

基本方法 · OpenMV中文入门教程

主要是将的怎么提取图像的部分基本信息和设置宽度、运算

 

3.统计图像信息

使用统计信息 · OpenMV中文入门教程

统计图像的最大面积颜色,平均数,中位数,众数,标准差,最小值,最大值,第一四分数,第三四分数等

4.画图 

需要对图像中的某些位置进行标注时使用,直接在图像中显示出来,很直观

画图 · OpenMV中文入门教程

画线

  • image.draw_line(line_tuple, color=White) 在图像中画一条直线。
    • line_tuple的格式是(x0, y0, x1, y1),意思是(x0, y0)到(x1, y1)的直线。
    • 颜色可以是灰度值(0-255),或者是彩色值(r, g, b)的tupple。默认是白色

画框

  • image.draw_rectangle(rect_tuple, color=White) 在图像中画一个矩形框。
    • rect_tuple 的格式是 (x, y, w, h)。

画圆

  • image.draw_circle(x, y, radius, color=White) 在图像中画一个圆。
    • x,y是圆心坐标
    • radius是圆的半径

画十字

  • image.draw_cross(x, y, size=5, color=White) 在图像中画一个十字
    • x,y是坐标
    • size是两侧的尺寸

写字

  • image.draw_string(x, y, text, color=White) 在图像中写字 8x10的像素
    • x,y是坐标。使用\n, \r, and \r\n会使光标移动到下一行。
    • text是要写的字符串。

其他的再具体应用上再说吧,毕竟是实操的。

今天想上手尝试一下,发现这个openmv好像有问题,或者是我的固件问题??不懂啊,两台电脑都没接上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/655323.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

那智不二越机器人维修案例分享

那智不二越工业机器人在工业范围内广泛应用于各种生产领域。其示教器作为人机交互的重要设备,常常需要定期维护和Nachi不二越机械手示教盒修理。 【Nachi不二越机器人示教器维修步骤】 1. 关闭电源 在进行任何那智不二越机器人维修操作之前,务必确保机器…

黑马es0-1实现自动补全功能

1、安装分词器 上github上找人做好的分词器,放到es-plugin数据卷里,然后重启es即可 2、自定义分词器 elasticsearch中分词器(analyzer)的组成包含三部分: character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符 …

如何开启tomcat管理功能

1 、修改conf/tomcat-users.xml <role rolename"manager-gui"/> <user username"tomcat" password"tomcat" roles"manager-gui"/>2、修改webapps/manager/META-INF/context.xml <Valve className"org.apache.cata…

【aI】LiveKit Agents Playground

demo 是跑在 playground中的。 语音助手demo 可以语音对话 概念 Concepts Agent: A function that defines the workflow of a programmable, server-side participant. This is your application code. Worker: A container process responsible for managing job queuing …

Spring Boot中@Value加载配置的替代者:@ConfigurationProperties

Value注解Spring Boot开发者都已经熟悉了&#xff0c;通过该注解&#xff0c;我们可以快速的把配置信息加载到Spring的Bean中。 例如&#xff1a;在application.yml中添加了一个配置如下&#xff1a; 我想在service中获取name&#xff0c;通过value注解方式实现&#xff0c;代…

【Python-OS】os.path.splitext()

作用&#xff1a;将文件路径分割成文件名和扩展名两部分。 slide_id, _ os.path.splitext(slide) print("slide:") print(slide) print("slide_id:") print(slide_id)注&#xff1a; slide是文件名&#xff0c;可以自行赋值

配置物联网平台 保姆级教程

一、云平台配置&#xff08;我们这里使用阿里云&#xff09; 1、注册和登录 &#xff08;1&#xff09;找到云平台官网&#xff0c;点击右上角的注册登录&#xff0c;完成之后&#xff0c;进行实名认证&#xff0c;任选一种认证方式。 ​​​​​​​ 2、实例的开通和创建 …

使用uniapp编写的微信小程序进行分包

简介&#xff1a; 由于小程序发布的时候每个包最多只能放置2MB的东西&#xff0c;所以把所有的代码资源都放置在一个主包当中不显示&#xff0c;所以就需要进行合理分包&#xff0c;&#xff0c;但是分包后整个小程序最终不能超过20MB。 一般情况下&#xff0c;我习惯将tabba…

node_相关知识点

Node.js采用谷歌的V8引擎&#xff0c;是一个服务器端的、非阻断式I/O的、事件驱动的JavaScript运行环境&#xff0c;可优化应用程序的传输量和规模。传统服务器多线程&#xff08;一个请求一个线程&#xff09;易阻塞。 一、线程、进程&#xff1a; 进程&#xff1a;进程负责…

go webview/wails学习记录

文章目录 webview安装基础代码错误情况wails安装初始化一个项目错误信息使用arco-design(在初始化项目上修改代码)修改窗口图标多页面展示添加自定义图标-iconfont制作伸缩侧边栏侧边栏菜单在form中使用select且select联动选择使用go读取本地excel文件在转json_str使用go将json…

js之图片上传

话不多说&#xff0c;直接上干货&#xff0c;注释在代码里面 下面是效果图和代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

FJSP:蛇优化算法SO求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

iOS--工厂设计模式

iOS--工厂设计模式 设计模式的概念和意义类族模式UIButton作为类族模式的例子总结 三种工厂设计模式简单工厂模式&#xff08;Simple Factory Pattern&#xff09;&#xff1a;代码实例 工厂方法模式&#xff08;Factory Method Pattern&#xff09;&#xff1a;代码实例 抽象工…

exe4j --实现把jar包打成exe可执行文件

工具准备 1.Java编辑器&#xff0c;如&#xff1a;idea、eclipse等&#xff0c;下载地址&#xff1a; IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains https://www.jetbrains.com/idea/ 2.exe4j&#xff0c;下载地址&#xff1a; ej-technologies - Java A…

对北京新发地当时菜品三十天内价格分布式爬取(1)---(获取当时菜品数据并构建请求数据推入redis)

本次项目网页url 北京新发地: http://www.xinfadi.com.cn/priceDetail.html 我们首先创建一个爬虫用于收集url与请求的data然后b,c,d使用RedisCrawlSpider来对数据进行分布式爬取 在此篇中我们仅介绍爬虫a 一.获取当天所有菜品数据 这是一条请求的负载我们只需要对pubDateSta…

ubuntu22.04安装调节显示器亮度工具

1 介绍 软件名叫 DDC/CI control&#xff0c;官网 2 安装方法 sudo apt install intltool i2c-tools libxml2-dev libpci-dev libgtk2.0-dev liblzma-dev3 效果 进入软件&#xff0c;忽略告警信息

家政保洁服务小程序怎么做?家政公司快速搭建专属小程序

在数字化时代背景下&#xff0c;家政保洁服务行业也迎来了线上转型的新机遇。家政保洁服务小程序&#xff0c;作为一种新型的线上服务平台&#xff0c;不仅能够提升家政公司的服务效率&#xff0c;还能为顾客提供更加便捷的预约上门服务体验。那么家政保洁服务小程序怎么做呢&a…

电脑无法远程桌面连接,关于电脑无法建立远程桌面连接的问题分析与解决方案

在信息化快速发展的今天&#xff0c;远程桌面连接已成为许多企业和个人用户进行远程办公、技术支持以及数据管理的必备工具。然而&#xff0c;当电脑无法建立远程桌面连接时&#xff0c;可能会对用户的工作和日常生活造成极大的不便。本文将深入分析电脑无法远程桌面连接的原因…

来自学术界的知识库 RAG 调优方案实践(一)

背景介绍 在之前的文章详细梳理过工业界的 RAG 方案 QAnything 和 RagFlow&#xff0c;这次主要整理下来自学术界的一系列 RAG 优化方案。 主要关注优化方案对应的设计思想以及相关的实现&#xff0c;希望可以对大家的 RAG 服务效果提升有所帮助。 基础介绍 在综述论文 Ret…

双指针法和链表练习题(2024/5/28)

1面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xf…