OpenMV激光打靶

2023-11-03

题目要求识别形状并且键盘设置控制激光笔走A,B,C等轨道。
OpenMV需要识别图形形状、激光笔位置,以及提高要求中的识别形状的面积等。
这里介绍一下识别激光的方法,主要使用的是色块识别。但是激光点面积很小,而且在黑色区域容易被吞掉。因此对图像本身做一定的处理,比如调节曝光度等。
在这里插入图片描述
感光器初始化代码:

sensor.reset()
    sensor.set_auto_gain(False)
    sensor.set_pixformat(sensor.GRAYSCALE) # or sensor.RGB565
    sensor.set_framesize(sensor.  QVGA) # or sensor.QVGA (or others)
    sensor.skip_frames(time=900) # Let new settings take affect.
    sensor.set_auto_exposure(False, 1000)#在这里调节曝光度,调节完可以比较清晰地看清激光点
    sensor.set_auto_whitebal(False) # turn this off.
    sensor.set_auto_gain(False) # 关闭增益(色块识别时必须要关)

识别激光点代码:

def color_blob(threshold):

    blobs = img.find_blobs(threshold,x_stride=1, y_stride=1, area_threshold=0, pixels_threshold=0,merge=False,margin=1)

    if len(blobs)>=1 :#有色块
        # Draw a rect around the blob.
        b = blobs[0]
        #img.draw_rectangle(b[0:4]) # rect
        cx = b[5]
        cy = b[6]
        for i in range(len(blobs)-1):
            #img.draw_rectangle(b[0:4]) # rect
            cx = blobs[i][5]+cx
            cy = blobs[i][6]+cy
        cx=int(cx/len(blobs))
        cy=int(cy/len(blobs))
        #img.draw_cross(cx, cy) # cx, cy
        print(cx,cy)
        return int(cx), int(cy)
    return -1, -1 #表示没有找到

这里最重要的是能看见激光点,除了调曝光度之外,还有激光点色域的调节。
这个是我们最终的阈值,L的最大值调到了255。手册上写的L范围理论上是0~125,但在实际运行的时候发现,激光点很白很亮,但摄像头就是看不见,当时调了很久,都是看不见,拍拍摄像头就又看到了。后面调到要生气了,直接把最大值写成了255,竟然识别的很顺畅。于是以后调色域都非常大胆(嘿嘿)。

threshold=[(60, 255, -20, 20, -20, 20)]

STM32f407+步进电机+openmv实现激光打靶

STM32+OPENMV激光打靶

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenMV激光打靶 的相关文章

随机推荐

  • PostgreSQL(数据库)资料和分布式系统(Distributed System)资料与Go语言资料整理

    PostgreSQL Documentation 介绍 PostgreSQL官方文档主页 PG技术沙龙ppt 介绍 2013年4月PG技术沙龙PPT PG9 3中文翻译文档 介绍 PG9 3中文翻译文档 谢谢 skykiker提供 Post
  • Android Studio ADB 环境变量配置

    Android 引用 SQLite关系库 需要用到ADB工具 如下为ADB环境变量配置 1 找到文件 sdk 下的 tools 和 platform tools 并复制其路径 2 打开环境变量配置 3 新建系统变量 命名为 Android
  • jQuery鼠标右击事件显示弹框

    content on contextmenu function e e preventDefault return false content on mousedown list function e console log e which
  • 【ENVI遥感影像分类】 监督、非监督分类

    基于光谱的分类方法 1 概要 灰度分割 非监督分类 ISODATA K Means 监督分类 基于传统统计分析分类器 平行六面体 最小距离 马氏距离 最大似然 分类器 基于人工智能分类器 神经网络 分类器 基于模式识别分类器 支持向量机 模
  • linux驱动37:kmalloc内存分配

    kmalloc和malloc类似 可被阻塞 分配的内存保持原有数据 分配的区域在物理内存中也是连续的 头文件
  • 卡尔曼滤波-卡尔曼滤波全篇讲解

    卡尔曼滤波 个人理解 两种信号 状态变量 按照人类经验预测的状态 观测变量 根据生活工具测量的实际状态 噪声 噪声分布 噪声表达 滤波器的计算原型 先验估计 后验估计与测量状态变量 计算增益系数K 数据融合基础变量 先验估计 测量状态变量
  • Apache Beam构建流处理任务

    最近做的一个项目需要用到Google云平台的Dataflow来进行数据处理 因此研究了一下相关的文档 了解到Dataflow是基于Apache beam来进行流程的编排 Beam支持多种不同的Runner 除了Dataflow Beam还支
  • 基于Docker安装及运行Mongodb

    1 拉取镜像 docker pull mongo latest 2 运行mongodb docker run itd name mongo p 27017 27017 mongo auth 3 进入mongodb容器 docker exec
  • 《只管去做》-如何做靠谱的年度计划

    五年后的一封信 调动五感去写 要找到怦然心动的感觉 世界上的人4种状态 空想家 这些人总是有很多想法 但真正落实去做的很少 回应者 这样的人对未来没有任何想法 对现状也没有掌控力 是一种混吃等死的状态 每一天都过得差不多 也安于现状 执行者
  • leecode刷题:1.两数之和

    给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出现 你可以按任意顺
  • Java基础:序列化与反序列化

    Java序列化是指把Java对象转换为字节序列的过程 而Java反序列化是指把字节序列恢复为Java对象的过程 序列化的使用场景 永久性保存对象 保存对象的字节序列到本地文件或者数据库中 通过序列化以字节流的形式使对象在网络中进行传递和接收
  • 2.移植uboot-添加2440单板,并实现NOR、NAND启动

    1 首先在uboot里新建单板2440 1 1将2410的单板文件夹拷贝成2440 cd board samsung cp smdk2410 smdk2440 rf 拷贝文件夹 然后将smdk2440下的smdk2410 c改为smdk24
  • 内存映射原理

    一 物理地址 物理地址是处理器在系统总线上看到的地址 使用RISC的处理器通常只实现一个物理地址空间 外围设备和物理内存使用统一的物理地址空间 有些处理器架构把分配给外围设备的物理地址区域称为设备内存 处理器通过外围设备控制器的寄存器访问外
  • springsecurity登录后返回token字符串和刷新token代码实例

    文章目录 1 登录接口 登陆成功则返回token 2 登录方法 3 刷新token的接口 4 生成token和刷新token的工具类 1 登录接口 登陆成功则返回token yml文件 jwt tokenHeader Authorizati
  • 特征选择relief算法介绍

    特征选择relief算法介绍 特征选择的基础了解 可以参考 一篇关于特征选择的博客 特征选择过程一般包括 特征子集产生过程 评价函数 停止准则 验证过程 1 特征子集选择过程 根据搜索过程的方法的不同 可以将特征选择分为穷举 启发式 随机几
  • clover引导修改默认启动

    不修改或配置不对默认就前面分区的windows了 config plist里如下就能默认启动macos了
  • 将CAD文件导入AD软件

    1 第一步 将cad中的dxf或dwg文件保存好 2 打开AD 新建PCB文件 3 点击左上角文件flie gt import导入 gt DXF DWG文件 4 选择DXF DWG打开 设置线宽 设置选择原点 选择PCB层 打开条件为ALL
  • 训练集(离线)与测试集(上线)效果差距很大怎么办?

    前言 相信各位童鞋在跑模型的时候时不时会遇到一个尴尬的现象 就是你在训练集或者验证集的模型效果好到令人发指 一时间以为 哼 就这 游戏结束 结果当你在测试集或者上线后发现真的就游戏结束了 指标低的没眼看 本人还是一个算法菜鸟时就遇到过这种情
  • Go语言编程思想6——Channel

    Go语言编程思想6 Channel Channel goroutine和goroutine之间双向的通道 一 基本语法 创建int类型的channel c make chan int 发送数据 c lt 1 接受数据 n lt c func
  • OpenMV激光打靶

    题目要求识别形状并且键盘设置控制激光笔走A B C等轨道 OpenMV需要识别图形形状 激光笔位置 以及提高要求中的识别形状的面积等 这里介绍一下识别激光的方法 主要使用的是色块识别 但是激光点面积很小 而且在黑色区域容易被吞掉 因此对图像