详细见这篇:2022年十月份电赛OpenMV巡线方案详细代码分析(1)_openmv巡线代码-CSDN博客
1.初始化配置
导入相关库
import sensor, image, time,math,pyb
from pyb import UART
from pyb import LED
import ustruct #压缩和不压缩原始数据类型,主要是串口发送那里
from image import SEARCH_EX,SEARCH_DS
import time
import sensor
相关设置
sensor.reset() #重置感光元件,重置摄像机
sensor.set_pixformat(sensor.RGB565) #设置颜色格式为RGB565,彩色,每个像素16bit。
#sensor.set_pixformat(sensor.GRAYSCALE) # use grayscale.画面呈现灰色
sensor.set_framesize(sensor.QQVGA) #图像大小为QQVGA 160*120的分辨率
sensor.skip_frames(time = 2000) #跳过n张照片,在更改设置后,跳过一些帧,等待感光元件变稳定。
sensor.set_auto_gain(False) #颜色识别必须关闭自动增益,会影响颜色识别效果
sensor.set_auto_whitebal(False) #颜色识别必须关闭白平衡,会影响颜色识别效果,导致颜色的阈值发生改变
clock = time.clock()
3.点灯
LED的作用:
1.所以我设置了一个RGB闪烁的程序。如果OpenMV正常运转,那么RGB就会闪烁。这样出现问题,也方便定位问题。
2.场地照明(有可能会用上)
from pyb import LED #初始化
red_led = pyb.LED(1) #下面这三个就是OpenMV上的LED初始化
green_led = pyb.LED(2)
blue_led = pyb.LED(3)
led = LED(1) # 红led
led.toggle()
led.on()#亮
led.off()#灭
#led(4)是什么
4.阈值
thresholds:存放可能要识别物体的LAB阈值。此处分别是黑色,红色,绿色,蓝色的阈值。
(具体要使用阈值编译器来编写)
# 颜色跟踪阈值 (L Min, L Max, A Min, A Max, B Min, B Max)
# 下面的阈值通常跟踪红色/绿色/蓝色的东西。您可能希望调整它们……
thresholds = [(0, 30, -22, 23, -128,80), #通用的黑色阈值
(30, 100, 15, 127, 15, 127), # 通用的红色阈值
(30, 100, -64, -8, -32, 32), # 通用的绿色阈值
(0, 30, 0, 64, -128, 0)] # 通用的蓝色阈值
#单独写一条的话
GROUND_THRESHOLD=(0,30,-22,23,-128,80)
5.绘制相关图形
# 绘制水平线
draw_hori_line(img, x0, x1, y, color)
#绘制竖直线
draw_vec_line(img, x, y0, y1, color)
# 绘制矩形
draw_rect(img, x, y, w, h, color)
6.图像相关操作
sensor.set_vflip(1) #用于设置垂直翻转(Vertical Flip)功能。
sensor.set_hmirror(1) # 这条语句通常用于设置水平镜像(Horizontal Mirror)功能
img.binary(turnGRAYSCALE_THRESHOLD) #图像二值化
7.寻找
img.find_rects(threshold = 10000)#方法检测图像中的矩形。threshold参数用于设置边缘检测的阈值,阈值越高,检测到的矩形越少,但可能更精确。这里的10000是一个相对较高的值,旨在滤除噪声和背景干扰。