OpenMV使用技巧
创始人
2025-05-31 08:39:07
0

目录

  • 一、光照影响
    • 1. 光照过强
    • 2. 光照过弱
  • 二、杂框影响
    • 1. threshold参数
    • 2. 长宽比
  • 三、画图

一、光照影响

  OpenMV在使用过程中可能会遇到光照太强或者光照太弱等影响图像识别的情况,尤其在跑神经网络模型时,光照太强或太弱对识别结果的影响是致命的。

1. 光照过强

  针对光照过强这一影响因素,可以通过调节摄像头的初始参数来解决。比较常用的摄像头参数如下:

sensor.reset()                       # 初始化相机传感器
sensor.set_pixformat(sensor.RGB565)  # 设置像素模式
sensor.set_framesize(sensor.QVGA)    # 设置分辨率
sensor.skip_frames(time = 200)       # 跳过20毫秒的帧
sensor.set_auto_gain(True)           # 打开自动增益, 默认打开;追踪颜色,则需关闭白平衡。
sensor.set_auto_whitebal(True)       # 打开(True)或关闭(False)自动白平衡。默认打开;追踪颜色,则需关闭白平衡
sensor.set_auto_exposure(True)       # 打开(True)或关闭(False)自动曝光。默认打开。

  上述设置为比较基本的参数初始化方法,但针对光照过强的影响,可以通过改变以下三个参数来解决:

sensor.set_contrast(constrast)      # 设置相机图像对比度。-3至+3。
sensor.set_brightness(brightness)   # 设置相机图像亮度。-3至+3。
sensor.set_saturation(saturation)   # 设置相机图像饱和度。-3至+3。

  通过固定相机图像的对比度、亮度和饱和度,基本可以保证在一定光照变化范围内,相机拍摄的图像的质量是相差无几的,即可以解决光照过强对OpenMV图像识别的影响。

2. 光照过弱

  当环境光照过弱时,只通过固定相机图像的对比度、亮度和饱和度并不能解决问题,此时需要通过人工增加光照,并且还要固定相机图像的对比度、亮度和饱和度。

在这里插入图片描述

  人工增加光照可以通过外加上图所示的LED灯带来实现,但外加LED灯带还需要额外给LED灯带的供电,且外加的LED灯带通常需要8-12V的电压来供电。常出现的问题是灯带的位置不好确定且供电电压不易寻找。

  OpenMV自身有四个LED灯,分别为红灯、绿灯、蓝灯和白灯,其中白灯的亮度可以应对一般的光照过弱场景,因此可以使用OpenMV自带的白色LED灯来增加光照,既不需要改变结构又不需要额外的供电电压。

import pyb
from pyb import LED #导入LEDred = LED(1)    # 定义一个LED1   红灯
green = LED(2)  # 定义一个LED2   绿灯
blue = LED(3)   # 定义一个LED3   蓝灯
white = LED(4)  # 定义一个LED4   照明灯while(True):red.on()        # 打开红灯pyb.mdelay(500) # 延时500msred.off()       # 关闭红灯pyb.mdelay(500)green.on()pyb.mdelay(500)green.off()pyb.mdelay(500)blue.on()pyb.mdelay(500)blue.off()pyb.mdelay(500)white.on()pyb.mdelay(500)white.off()pyb.mdelay(500)

二、杂框影响

  在使用find_rects()函数查找图像中的矩形时,可能会识别到非目标矩形,甚至识别到一些奇形怪状的矩形,这也会影响识别的结果。

1. threshold参数

  这种情况可以通过修改threshold参数来解决,此时,只有边界大小小于threshold的矩形才会被识别出来,其余矩形全被过滤掉了。

image.find_rects([threshold=10000])

2. 长宽比

  但这种方法并不能解决全部的问题,有时OpenMV还会识别到一些长度很大、宽度很小或者宽度很大、长度很小的矩形,此时可以通过限制长度和宽度限制长宽比来筛选正确的矩形框:

while(True):img = sensor.snapshot()for r in img.find_rects(threshold = 10000):             # 在图像中搜索矩形print(r.rect()[3])  								# 索引[3]:返回矩形的高度print(r.rect()[2])  								# 索引[2]:返回矩阵的宽度if(abs(r.rect()[3]) > 160 or abs(r.rect()[2]) > 160 or abs(r.rect()[3]) < 70 or abs(r.rect()[2]) < 70): # 限制长度和宽度break    	if(r.rect()[3]/r.rect()[2]>1.3 or r.rect()[3]/r.rect()[2]<0.7): # 限制长宽比break

  需要注意的是,上述threshold参数和长度宽度的取值都需要根据实际应用场景和对象来确定,每个物体的参数是不一样的。

三、画图

  在调试程序的过程中,可以在OpenMV IDE窗口中画一些图来直观地观察程序运行过程。

while(True):img = sensor.snapshot()img.draw_rectangle(r.rect(), color = (255, 0, 0))   # 绘制矩形外框,便于在IDE上查看识别到的矩形位置img.draw_cross(int(r.rect()[0] + r.rect()[2]/2), int(r.rect()[1] + r.rect()[3]/2), color = (0, 255, 0))#在矩形中心画十字img.draw_string(r.rect()[0] + 20, r.rect()[1]-20, 001+"my openmv"),color = (255,0,0), scale = 2,mono_space=False)#显示类别名称和准确率for p in r.corners():img.draw_circle(p[0], p[1], 5, color = (0, 255, 0))img.draw_rectangle(r.rect(), color = (255, 0, 0))#在矩形的四个边角画出四个圆    

相关内容

热门资讯

iPhone手机怎么玩安卓系统... 你有没有想过,你的iPhone手机竟然也能玩安卓系统?没错,就是那个一直以来让你觉得遥不可及的安卓世...
平板删安卓系统更新不了,原因及... 最近是不是你也遇到了这样的烦恼?平板电脑上的安卓系统更新不了,是不是让你头疼得要命?别急,今天就来给...
苹果组装机安卓系统卡,卡顿背后... 你有没有发现,最近用苹果手机的时候,有时候系统有点卡呢?这可真是让人头疼啊!你知道吗,其实这背后还有...
安卓系统原生浏览器,功能与体验... 你有没有发现,每次打开手机,那个小小的浏览器窗口总是默默无闻地在那里,陪你浏览网页、搜索信息、看视频...
安卓机如何上苹果系统,跨平台体... 你是不是也和我一样,对安卓机和苹果系统之间的切换充满了好奇?想象你的安卓手机里装满了各种应用,而苹果...
安卓导入系统证书失败,原因分析... 最近在使用安卓手机的时候,你是不是也遇到了一个让人头疼的问题——导入系统证书失败?别急,今天就来给你...
安卓原生系统有哪些手机,盘点搭... 你有没有想过,为什么有些手机用起来就是那么流畅,那么顺心呢?这背后可大有学问哦!今天,就让我带你一起...
安卓系统关机了怎么定位,安卓系... 手机突然关机了,是不是有点慌张呢?别担心,今天就来教你一招,让你的安卓手机即使关机了,也能轻松定位到...
安卓系统游戏加速器,畅享无延迟... 你有没有发现,手机游戏越来越好玩了?不过,有时候游戏体验可能并不那么顺畅,是不是因为手机性能不够强大...
安卓4系统天气功能,尽在掌握 安卓4系统天气功能大揭秘在当今这个数字化的世界里,手机已经不仅仅是一个通信工具,它更是一个集成了各种...
安卓系统如何玩碧蓝幻想,攻略与... 你有没有想过,在安卓系统上玩《碧蓝幻想》竟然可以这么酷炫?没错,就是那个让你沉迷其中的二次元大作!今...
安卓系统搜不到图朵,图朵生成之... 最近是不是你也遇到了这样的烦恼?手机里明明有那么多美美的图片,但是用安卓系统搜索的时候,却怎么也找不...
魁族8刷安卓系统,系统升级后的... 哇,你知道吗?最近在安卓系统圈子里,有一个话题可是引起了不小的轰动,那就是魁族8刷安卓系统。你是不是...
微信正版安装安卓系统,畅享沟通... 你有没有想过,你的微信是不是正版安装的安卓系统呢?这可不是一个小问题哦,它关系到你的微信使用体验和隐...
电视能刷安卓系统吗,电视也能刷... 电视能刷安卓系统吗?揭秘智能电视的无限可能想象你家的电视不再只是用来观看节目的工具,而是变成了一个功...
安卓系统开通通知功能,畅享智能... 你知道吗?最近安卓系统更新后,新增了一个超级实用的功能——开通通知功能!这可是个大喜事,让咱们的生活...
苹果系统安卓爱思助手,系统兼容... 你有没有发现,手机的世界里,苹果系统和安卓系统就像是一对欢喜冤家,总是各有各的粉丝,各有各的拥趸。而...
安卓系统占用很大内存,揭秘内存... 手机里的安卓系统是不是让你感觉内存不够用,就像你的房间堆满了杂物,总是找不到地方放新东西?别急,今天...
安卓系统p30,安卓系统下的摄... 你有没有发现,最近安卓系统P30在手机圈里可是火得一塌糊涂呢!这不,我就来给你好好扒一扒这款手机的那...
siri被安卓系统进入了,智能... 你知道吗?最近科技圈可是炸开了锅,因为一个大家伙——Siri,竟然悄悄地溜进了安卓系统!这可不是什么...