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