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, timesensor.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, timesensor.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, pybsensor.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, timesensor.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好像有问题,或者是我的固件问题??不懂啊,两台电脑都没接上。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JUC总结1

线程和进程的对比 进程是操作系统资源分配的最小单位,其包含了进程控制块、程序、数据等,在电脑上启动的一个个应用程序就是进程,当一个程序要被运行时,从磁盘中将这个应用程序的代码加载到内存中,就开启了一个进程。…

音乐系统java在线音乐网站基于springboot+vue的音乐系统带万字文档

文章目录 音乐系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码和万字论文参考(9.9¥带走) 音乐系统 一、项目演示 在线音乐系统 二、项目介绍 基于springbootvue的前后端分离在线音乐系…

【Python设计模式14】状态模式

状态模式(State Pattern)是一种行为型设计模式,它允许对象在其内部状态改变时改变其行为。状态模式将不同状态的行为封装到不同的状态类中,使得状态之间的转换独立于对象本身,减少了条件语句的使用,提高了代…

Design and implementation of robot impedance controller

机器人阻抗控制器的设计与实现是一个复杂但关键的过程,它涉及到多个方面以确保机器人能够在外界环境的影响下保持稳定的性能。以下是对机器人阻抗控制器设计与实现的详细解答: 一、阻抗控制原理 阻抗控制的基本原理是建立一个期望的机器人位置和接触力…

股票交易vip快速通道有什么门槛?vip交易通道的开通流程!

证券公司的VIP通道通常是为了满足高端客户或高频交易客户的需求而设立的,提供更快速、更便捷的交易服务。证券公司VIP通道适用于有追涨停板需求的投资者,以及一些喜爱高频交易的投资者,总的来说就是快速,在交易主机排队靠前。 VI…

go-zero 实战(1)

环境准备 go 版本 go version go1.22.2 linux/amd64 goctl 安装 goctl(官方建议读 go control)是 go-zero微服务框架下的代码生成工具。使用 goctl 可以显著提升开发效率,让开发人员将时间重点放在业务开发上,其功能有&#xff1a…

pands使用openpyxl引擎实现EXCEL条件格式

通过python的openpyxl库,实现公式条件格式。 实现内容:D列单元格不等于E列同行单元格时标红。 #重点是formula后面的公式不需要“”号。 from openpyxl.styles import Color, PatternFill, Font, Border from openpyxl.styles.differential import Dif…

Java客户端SpringDataRedis(RedisTemplate)上手

文章目录 ⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码 ⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结 ⛄概述 SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模…

LLM学习笔记

Q1:SFT时,计算LOSS ​ LLM是自回归生成模型,每次只会生成一个 token,难道 SFT 时,对于一个 (L, D) 的数据,要调用 L 次LLM去计算loss? A1: ​ 在每个前向传播过程,模型…

HDU 2196 Computer(树形dp)

H D U 2196 C o m p u t e r (树形 d p ) \Huge{HDU 2196 Computer(树形dp)} HDU2196Computer(树形dp) 文章目录 题意思路标程 题目链接:Problem - 2196 (hdu.edu.cn) 题意 给出一个n个节点的无…

论AI大模型炼丹与练舞的关系

AI大模型的训练和微调的区别,就像是在舞蹈中学习基础动作和编排新的舞蹈一样。 想象一下,你有一个神奇的舞蹈机器人,只要给它足够的舞蹈视频,它就能学会各种各样的舞步。 模型训练的过程就像是给这个舞蹈教练机器人一个包含了各种…

git将某次提交合并到另一个分支

一、需求背景 将分支b中的某一次提交单独合并到分支a 二、实现方案 需求:将分支b中的某一次提交单独合并到分支a 1.在git上查看指定某次提交的id,如下图所示: 也可以通过git log命令查看提交的id,如下图: git log…

CNN网络的介绍及实战

卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,它在计算机视觉领域取得了巨大成功。CNN的设计灵感来自于生物学中的视觉系统,旨在模拟人类视觉处理的方式。CNN由多层卷积层和池化层堆叠而成&…

【AIGC调研系列】MiniCPM-Llama3-V2.5模型与GPT-4V对比

MiniCPM-Llama3-V2.5模型与GPT-4V的对比可以从多个方面进行分析,包括性能、应用场景和技术特点。 从性能角度来看,MiniCPM-Llama3-V2.5在OCR识别、模型幻觉能力和空间理解能力方面表现出色,实现了开源模型的性能SOTA(State of th…

Android13 基座充电屏保

屏幕保护有两个设置可选:默认为插入基座充电时 通过DreamBackend启用屏保,并且保存选择的时机 //QSSI.13\packages\apps\Settings\src\com\android\settings\dream\WhenToDreamPicker.java Override protected boolean setDefaultKey(String key) {mBac…

LeetCode hot100-50-G

124. 二叉树中的最大路径和二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根…

linux input 驱动

使用文档 设备树修改 新增一个 LED 节点 arch/arm/boot/dts/arm/vexpress-v2p-ca9.dts my_pl_led {compatible = "arm, cortex-a9-led";status = "okay";};设备树编译 make dtbs日志 DTC arch/arm/boot/dts/arm/vexpress

AI视频换脸!最快的方法,100%成功,完全免费,无需配置、打开即用

这是一款百分百完全免费,超级好用又简单的AI视频换脸工具,不仅效果非常不错而且支持CPU和GPU解码,即使电脑上没有独立显卡,你也可以通过电脑上的CPU要进解码,虽然我之前给他介绍好几个有关AI视频,比如像这个…

通关!游戏设计之道Day17

音乐里的音符 音乐能给任何娱乐体验增色不少。 主题公园景区,电影或电子游戏都少不了它。 在考虑音乐设计时,你需要弄清楚的第一个问题是:“我想要什么类型的音乐?” 关于这个问题,确切的答案有两个:用…

46. 全排列 - 力扣(LeetCode)

基础知识要求: Java:方法、集合、泛型、Arrays工具类、数组、for循环、if判断 Python: 方法、列表、for循环、if判断 题目: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案…