非常详细的视频和文字教程,讲解常见的openmv教程包括 巡线、物体识别、圆环识别、阈值自动获取等。非常适合学习openmv、K210、K230等项目
视频合集链接在:
openmv教程合集 openmv入门到项目开发 openmv和STM32通信 openmv和opencv区别 openmv巡线 openmv数字识别教程LCD
第一章-开发准备
1.1 硬件介绍和准备
1.1.1 常用图像处理工具
比赛等项目常见嵌入式视觉工具
编辑
1.1.1 openmv 是什么
OpenMV 是一款小型嵌入式机器视觉开发平台,主要用于快速实现图像处理和机器视觉相关应用。它的核心是一个带有摄像头的微控制器模块,集成了强大的处理器和丰富的图像处理库,适合初学者、开发者以及教育用户用来学习和开发嵌入式视觉应用。
编辑
1.1 软件环境准备
1.1.2 安装软件和卸载软件
安装软件
C:/Program Files/OpenMV IDE
编辑
点击下一步
编辑
软件不大,我们直接安装到默认位置,直接点击下一步
编辑
然后就是一直点击: 下一步、安装。
这样我们的软件就安装好了。
我们不需要同意安装最新版的软件,先和我使用同样的版本就可以。
1.1.3 软件基本介绍(镜像问题在这里!!!)
快捷键
tab 是缩进
shift + tab 是减少缩进
Ctrl + /:快速将选定行或光标所在行注释或取消注释。
(如果快捷键用不了,可能是与其他软件快捷键冲突,可以尝试关掉其他软件或者通过搜索和AI查找解决方法 )
功能介绍
如何确定像素大小阈值
一个像素对应的毫米数与摄像头的视场角、分辨率、物体与摄像头的距离以及镜头焦距等因素密切相关。
我们可以通过把已知长度的物体放,大部分使用距离的位置上,通过帧缓冲区,拖出一个高度为1 的区域通过,右边的像素,和已经知道的长度,就可以计算出一个像素对应大概长度,注意这个长度还会随着物体和摄像头的距离而变化,所以这个像素阈值需要考虑的范围大一些。
编辑
如何确定颜色阈值
编辑
打开官方提供例程
(具体每个例程什么意思,可以查看代码前面的注释说明和例程名称,不明白的可以让AI帮你注释讲解)
编辑
测试运行(镜像问题在这里!!)
点击不要更新openmv固件!非绝对必要不要更新固件,这样和我使用一个固件方便学习使用。
编辑
- 如果没有对焦好,需要手动拧一下摄像头前部分的镜头,来手动对焦
- 如果图像需要镜像一下,才可以正常方向显示就使用下面代码
编辑
# This work is licensed under the MIT license.
# Copyright (c) 2013-2023 OpenMV LLC. All rights reserved.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Hello World Example
#
# Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script!
import sensor # 引入感光元件的模块,用于操作摄像头传感器
import time # 引入时间模块,用于控制时间延迟和FPS计算
# 初始化传感器
sensor.reset() # Reset and initialize the sensor. 重置并初始化传感器
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE) 设置像素格式为RGB565(或者灰度)
sensor.set_framesize(sensor.QVGA) # Set frame size to QVGA (320x240) 设置帧大小为QVGA(320x240分辨率)
#***************************如果不需要镜像就注释掉 下面 的代码********************
# 设置摄像头镜像/翻转操作,根据摄像头安装的方向决定是否需要
sensor.set_vflip(True) # 垂直方向翻转。根据实际摄像头模块的安装位置调整是否需要此操作
#!!!重要:不同摄像头是否需要镜像,根据实际情况定。如果不需要镜像,请注释掉以下代码:
sensor.set_hmirror(True) # 水平方向反转。根据实际摄像头模块的安装位置调整是否需要此操作
#!!!重要:不同摄像头是否需要镜像,根据实际情况定。如果不需要镜像,请注释掉上述代码。
#***************************如果不需要镜像就注释掉 上面 的代码********************
sensor.skip_frames(time=2000) # Wait for settings take effect. 等待2秒钟让设置生效
clock = time.clock() # Create a clock object to track the FPS. 创建一个时钟对象,用于追踪FPS(每秒帧数)
while True:
clock.tick() # Update the FPS clock. 更新FPS时钟
img = sensor.snapshot() # Take a picture and return the image. 拍摄一张照片并返回图像
print(clock.fps()) # 输出当前的帧率(FPS),用来衡量摄像头的拍摄速度
# Note: OpenMV Cam runs about half as fast when connected
# to the IDE. The FPS should increase once disconnected.
# 注意:当OpenMV相机连接到IDE时,速度大约是平时的一半。断开连接后,FPS应该会提高。
1.1.4 连接异常或者连接不上解决方法
依此跟着下面步骤测试,每做一步,测试一些效果如何。
- 退出火绒,360电脑安装的相关杀毒软件。
- 更换一个USB线,以确保使用的是没有问题的USB数据线,(尽量换成正在用的原装手机数据线)
- 重要很多人是因为这个原因:电脑插上扩展坞(经常使用电脑USB口 拔插嵌入式设备可能电脑USB设备损坏,可以换个一个电脑或者电脑插上USB扩展坞测试 试试)
编辑
1.1.5 OpenMV固件如何烧录或者更换指定固件(降固件或者升级固件)(不需要跟着操作)
可能openmv IDE安装版本要4.0.14及其应该带运行引导加载程序的功能
如何获取固件
-
资料里面带了一些版本固件
我提供的资料里面带了 一些版本固件(所带版本会根据情况实时调整)
其中4.4.1是-好家伙VCC openMV 出厂 默认固件
编辑
获得自己想要的特定版本固件
比如您想获得某个特定固件版本,可以访问openmv官方github 网址(访问这个网址 需要科学些上网):Releases · openmv/openmv:
Releases · openmv/openmv · GitHub
编辑
然后比如你要下载4.5.9
编辑
往后翻,下载这个
编辑
然后解压缩文件,如果是openmv H7 选择OPENMV4 ,如果是openmv H7 plus 选择 OPENMV4P
编辑
上面介绍了如何获得一些固件,下面演示如何烧写你想烧录的固件。
使用运行引导加载程序
选择
编辑
选择浏览
编辑
选择根据自己的板子选择
编辑
选择运行
编辑
如果这里跳出让选择板子型号的弹窗,按照下面的选则(如果没有则不需要选择)
如果是openmv H7 选择Openmv Cam H7 (STM32H743)
如果是openmv H7 plus 选择Openmv Cam H7 Plus (STM32H743 wSDRAM)
然后出现了下面的页面,进行下面的操作。
编辑
\1. 断开摄像头模块和电脑的连接。
\2. 把下面boot 引脚和RST引脚使用镊子或者杜邦线连接
编辑
- 然后连接到电脑
编辑
然后观察进度,等待大概二分钟左右
编辑
然后出现下面的页面
然后进行下面操作 1. 断开摄像头和电脑的连接、取下BOOT和RST引脚的镊子或者跳线,然后再重新把摄像头连接到电脑,然后等一段时间再点击确定按钮。
编辑
编辑
1.2 常见错误与问题要大概了解
注意:并不能列举所有错误,万能的方法: 开发过程细心、遇到问题善于分析、善用搜索与AI工具。
最新的内容会更新在开发教程笔记上,可以视频评论区获取查看最新内容
下面内容参考:
- CSDN网友解决方法CSDN - 专业开发者社区
- openmv常见问题教网络教程常见错误提示 · OpenMV中文入门教程
1.2.1 常见问题
好家伙VCC的openmv H7和openmv H7plus有什么区别
openmv H7 plus的存储空间更大,可以运行复杂一些深度学习模型,如果执行比较复杂或者比较多的深度学习识别分类项目(比如红绿灯、垃圾分类等)或者预算支持建议使用openmv H7plus。
OpenMV与OpenCV的区别?
- OpenMV:嵌入式机器视觉模块,基于STM32微控制器,适合实时、低功耗应用。
- OpenCV:计算机视觉库,运行在PC或高性能设备上,功能更强大但需要更多资源。
OpenMV比树莓派有什么优势,什么区别?
- 优势:OpenMV更轻量、低功耗,适合实时嵌入式应用;树莓派性能更强但功耗高。
- 区别:OpenMV专注于机器视觉,树莓派是通用计算平台。
OpenMV的开发难吗?
开发相对简单,提供MicroPython API,适合初学者
我能看懂视频,但是好像又没有学会?比如不会把两个功能写在一起
- 这是学习过程中的常见问题,建议多实践,从简单功能开始,多学习Python编程和使用AI工具,逐步组合复杂功能。
OpenMV可以进行神经网络/深度学习吗?
- H7:支持轻量级模型(TinyML)。
- H7 Plus:支持复杂模型(如MobileNet),适合深度学习任务。
OpenMV的分辨率是多少?
- H7:OV7725传感器,最高640x480(VGA)。
- H7 Plus:OV5640传感器,最高2592x1944(5MP)。
OpenMV的可以使用高分辨率吗?
- H7:最高支持VGA(640x480)。
- H7 Plus:支持1080p和5MP高分辨率。
OpenMV的感光元件可以换吗?
可以更换 OV5640、OV7725、OV2640
OpenMV可以使用外置的摄像头吗?比如USB摄像头。
不可以,只可以安装指定的OV5640、OV7725、OV2640
OpenMV的帧率是多少?
尺寸 | 灰度/彩色 | WiFi图传 | IDE图传 | 帧率 |
---|---|---|---|---|
QQVGA | 灰度 | 否 | 否 | 85 |
QQVGA | 灰度 | 否 | 是 | 85 |
QQVGA | 灰度 | 是 | 否 | 42 |
QQVGA | 灰度 | 是 | 是 | 30 |
QQVGA | 彩色 | 否 | 否 | 85 |
QQVGA | 彩色 | 否 | 是 | 58 |
QQVGA | 彩色 | 是 | 否 | 35 |
QQVGA | 彩色 | 是 | 是 | 21 |
QVGA | 灰度 | 否 | 否 | 85 |
QVGA | 灰度 | 否 | 是 | 65 |
QVGA | 灰度 | 是 | 否 | 21 |
QVGA | 灰度 | 是 | 是 | 17 |
QVGA | 彩色 | 否 | 否 | 85 |
QVGA | 彩色 | 否 | 是 | 50 |
QVGA | 彩色 | 是 | 否 | 21 |
QVGA | 彩色 | 是 | 是 | 13 |
OpenMV镜头可以换吗?
可以,标配的M12镜头。
OpenMV运行程序的时候很烫怎么回事?
50°左右是正常的。
可以无线传输图像吗?
可以。
OpenMV4 H7/OpenMV4 H7 Plus 使用WiFi扩展板。
OpenMV SD卡有什么用?
可以用来存图像或者视频。
OpenMV内存卡最大支持多大的?
32G
OpenMV有什么算法?(可以完成那些算法功能)
- 追踪颜色
- 二维码识别
- 人脸识别
- 机器人巡线
- 模版匹配
- 特征点检测
- 人眼追踪
- HAAR,LBP,HOG算法
- 保存图像
- 录制视频
- 边缘检测
- 瞳孔识别
- 直线检测
- 光流
- 人脸分辨
- AprilTag
OpenMV可以识别数字吗?
使用模板匹配
OpenMV可以识别字母吗?
使用模板匹配
OpenMV可以识别汉字吗?
使用模板匹配
OpenMV可以识别形状吗?
使用模板匹配
OpenMV可以人脸识别吗?
使用模板匹配
OpenMV可以识别二维码吗?
可以,openmv扫码识别,支持
OpenMV可以识别激光吗?
可以,激光识别
OpenMV可以和其他芯片通信吗?
可以串口通信
OpenMV可以和Arduino/51/STM32通信吗?
可以串口通信
OpenMV如何与PLC通信?
PLC的串口有RS232,RS485,使用一个TTL-RS232或者TTL-RS485的模块,然后就可以了
OpenMV可以用在飞控上吗?
可以,有串口。
OpenMV如何供电?
下面二选一,也可以同时供电
- USB直接供电
吗?**
使用模板匹配
OpenMV可以识别形状吗?
使用模板匹配
OpenMV可以人脸识别吗?
使用模板匹配
OpenMV可以识别二维码吗?
可以,openmv扫码识别,支持
OpenMV可以识别激光吗?
可以,激光识别
OpenMV可以和其他芯片通信吗?
可以串口通信
OpenMV可以和Arduino/51/STM32通信吗?
可以串口通信
OpenMV如何与PLC通信?
PLC的串口有RS232,RS485,使用一个TTL-RS232或者TTL-RS485的模块,然后就可以了
OpenMV可以用在飞控上吗?
可以,有串口。
OpenMV如何供电?
下面二选一,也可以同时供电
- USB直接供电
- Vin-GND接3.6V~5V的电压,推荐5V