OpenMV 自适应颜色阈值

目录

演示视频

思路讲解

OprnMV代码



演示视频

备战2023电赛~openmv自适应颜色阈值(附源代码网盘链接)

思路讲解

1. 参考openmv官方例程讲解10-Color-Tracking->image_statistics_info图像统计信息https://book.openmv.cc/example/10-Color-Tracking/image-statistics-info.html
用img.get_statistics函数获取图像统计信息(给get_statistics()函数传递一个“roi =”来获得该区域的统计信息)
2.本函数返回一个一个数据对象,请参见 statistics 对象以获取更多信息(在中文文档里找到statistics ),分别获取RGB565中L A B的众数(这里参考其他up主的思路)
3.根据获取到的3个众数,分别+-20当做自适应的颜色阈值thresholds
4.根据这个颜色阈值进行二值化或者画框验证

最简单解释:取roi的阈值,然后全图就用roi里的阈值 

OpenMV代码

import sensor, image, time, pybyellow_thresholds = (47, 0, 78, 11, 65, -31)    #定义变量
sensor.reset()                      # Reset and initialize the sensor.
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 2000)     # Wait for settings take effect.
clock = time.clock()                # Create a clock object to track the FPS.while(True):clock.tick()                    # Update the FPS clock.img = sensor.snapshot()         # Take a picture and return the image.img.draw_rectangle((131, 122, 20, 20), color = (255,255,255))   #画roi框statistics_Data = img.get_statistics(roi = (131, 122, 20, 20) )
#    print(statistics_Data)
#    print(statistics_Data.l_mode()) #LAB众数,打印出来看看效果稳定不稳定
#    print(statistics_Data.a_mode())
#    print(statistics_Data.b_mode())color_L_Mode = statistics_Data.l_mode()     #分别赋值LAB的众数color_A_Mode = statistics_Data.a_mode()color_B_Mode = statistics_Data.b_mode()#计算颜色阈值,这样写的话,颜色阈值是实时变化的,后续想要什么效果可以自己修改yellow_thresholds = (color_L_Mode-20, color_L_Mode+20, color_A_Mode-20, \color_A_Mode+20, color_B_Mode-20, color_B_Mode+20)img.binary([yellow_thresholds]) #二值化看图像效果print(yellow_thresholds)        #打印输出颜色阈值print(clock.fps())

用途:上电采集场地上roi区域内的颜色阈值,当做阈值,可以提取一次或者多次,这样的话,就可以不适用固定的颜色阈值,是动态变化的~~~

其他自行体会~~~


电赛结束终于有空发博客了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/61534.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

https的原理和方案

文章目录 https原理为什么要加密常见的加密方式对称加密非对称加密数据摘要&&数据指纹数据签名 https的几种工作方案方案一:只使用对称加密方案二:只使用非对称加密方案三:两端都使用非对称加密方案四:非对称加密 对称加…

前端项目环境变量如何配置?

我们在项目开发过程中,至少会经历开发环境、测试环境和生产环境三个阶段。不同阶段请求的状态(如接口地址等)不尽相同,若手动切换接口地址是相当繁琐切容易出错的。于是环境变量配置的需求就应运而生,我们只需做简单的…

花费7元训练自己的GPT 2模型

在上一篇博客中,我介绍了用Tensorflow来重现GPT 1的模型和训练的过程。这次我打算用Pytorch来重现GPT 2的模型并从头进行训练。 GPT 2的模型相比GPT 1的改进并不多,主要在以下方面: 1. GPT 2把layer normalization放在每个decoder block的前…

【数理知识】最小二乘法,从线性回归出发,数值举例并用最小二乘法求解回归模型

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动,平动,转动4【数理知识】向量数乘,内积,外积,matlab代码实现5【数理知识】协…

160. 相交链表 题解

题目描述:160. 相交链表 - 力扣(LeetCode) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 注:本题中链表相交是“Y”型的&am…

【学习日记】【FreeRTOS】调度器函数实现详解

写在前面 本文主要是对于 FreeRTOS 中调度器函数实现的详细解释,代码大部分参考了野火 FreeRTOS 教程配套源码,作了一小部分修改。 一、MSP 和 PSP Cortex-M有两种栈空间,主堆栈和进程堆栈。 MSP 用于系统级别和中断处理的堆栈 MSP 用于保…

Linux系统调试课:Linux Kernel Printk

🚀返回专栏总目录 文章目录 0、printk 说明1、printk 日志等级设置2、屏蔽等级日志控制机制3、printk打印常用方式4、printk打印格式0、printk 说明 在开发Linux device Driver或者跟踪调试内核行为的时候经常要通过Log API来trace整个过程,Kernel API printk()是整个Kern…

idea 加入 .so文件

背景 做项目的时候,遇到需要查看native 方法 涉及到c源码的查看,因此需要加载.so文件去查看。 操作 idea-file-project structure 找到lib,把你的.so文件添加进来就可以啦 然后你就可以查看对应的源码了。

利用ChatGPT绘制思维导图——以新能源汽车竞品分析报告为例

随着人们对环境保护的日益关注和传统燃油汽车的限制,全球范围内对新能源汽车的需求不断增长。新能源汽车市场的激烈竞争使得了解各个竞品的特点和优劣成为关键。然而,针对这一领域的详尽竞品分析却常常需要大量时间和精力。 在此背景下,人工智…

Windows下运行Tomcat服务时报GC Overhead Limit Exceeded

根本原因是在新建Tomcat作为Windows服务时,系统默认设置的堆内存太小了,我们打开/bin/service.bat文件,将如下图所示的默认值改大一些就好了 if "%JvmMs%" "" set JvmMs512 if "%JvmMx%" "" set J…

移动端的Flex布局

目录 引入 一、传统布局与flex布局 传统性 flex布局 二、felx的特点 三、flex布局父项的常见属性 四、flex布局子项的常见方向 总结 引入 flex 是 flexible Box的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器…

【Linux:线程池】

文章目录 1 线程池概念2 第一个版本的线程池3 第二个版本的线程池4 第三个版本的线程池5 STL中的容器以及智能指针的线程安全问题6 其他常见的各种锁7 读者写者问题(了解) 1 线程池概念 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而…