OpenMV颜色阈值设置

简介: OpenMV颜色阈值设置

OpenMV提供了两者阈值设置方案。分别是阈值编译器和直方图的方式选择阈值。


阈值编译器:优点,所寻找到的目标颜色更加合理,其他相似颜色区域的干扰比较小。缺点,调节LAB的最大最小值比较花费时间。


直立方图恰好相反,他很容易找到LAB的最大最小值的大体区间,但是容易收到相似颜色区域的干扰。所以,建议两者配合使用,先用直立方图找到LAB的最大最小值的大体区间,再利用阈值编译器对LAB的最大最小值进行微调。


首先我们使用直立方图:


打开OpenMV IDE软件——>右下角有一个直立方图——>颜色识别中,只需要用到LAB色彩空间。


我们要选择绿茶作为目标对象,只需要在帧缓冲区,拖动鼠标左键即可。根据直方图可知,我们的L最大值选择75,最小值为30。A最大值为0,最小值为-70。B的最大值为70,最小值为-10。(注:这个只需要包含绝大部分就行)

之后进行阈值编译器设置:

左上方工具——>机器视觉——>阈值编译器——>帧缓冲区。可对要判断图像的LAB值进行调整。注意:这个时候OpenMV会截取当前的图片作为LAB值调整。所以我们采用阈值编译器的时候,需要提前将目标识别单位放在OpenMV摄像头之前。再进行如上操作


根据直立方图的值,我们调整LAB最大和最小值,尽可能的让要目标识别对象变成全白色。(注:即使没有全部变成白色也不影响,反正最后会把所有没有被滤除的白色区域变成一个大框)然后复制下方的LAB阈值。

将复制的LAB阈值放到thresholds中。注意:我们看到thresholds有多个值,其实是因为我们在for语句中是使用的[thresholds[threshold_index]],而threshold_index为0,也就是说,先择我们在识别红色。因为我们的threshold_index=0,所以我们复制的阈值要求放在thresholds第一个位置(# generic_red_thresholds前)。如果threshold_index=1,我们复制的阈值要求放在thresholds第二个位置(# generic_green_thresholds前)。threshold_index=2,同理放在第三个位置。


threshold_index = 0 # 0 for red, 1 for green, 2 for blue
thresholds = [(30, 100, 15, 127, 15, 127), # generic_red_thresholds
              (30, 100, -64, -8, -32, 32), # generic_green_thresholds
              (0, 30, 0, 64, -128, 0)] # generic_blue_thresholds
.....(中间的代码省略)
for blob in img.find_blobs([thresholds[threshold_index]], pixels_threshold=200, area_threshold=200, merge=True)


但是OpenMV的官方教程我们能看到他的代码是这样的,其实是一样的。只不过这里的LAB阈值不需要注意这么多。直接更改green_threshold后面的值即可。

green_threshold   = (   0,   80,  -70,   -10,   -0,   30)
.....(中间的代码省略)
blobs = img.find_blobs([green_threshold])
目录
相关文章
|
存储 网络协议 Ubuntu
【C++网络编程】Socket基础:网络通讯程序入门级教程
【C++网络编程】Socket基础:网络通讯程序入门级教程
594 7
|
存储 缓存 前端开发
Antd Upload + React-Cropper 实现图片自定义区域剪裁并上传功能
通过Upload组件结合react-Cropper实现图片的裁剪上传组件封装,剖析antd-img-crop源码实现的逻辑,对自己封装的组件进行进一步优化,改造!
5641 0
Antd Upload + React-Cropper 实现图片自定义区域剪裁并上传功能
|
算法
【MATLAB】 SSA奇异谱分析信号分解算法
【MATLAB】 SSA奇异谱分析信号分解算法
913 0
|
移动开发 算法
科学计算与仿真-高斯牛顿法的非线性最小二乘问题简单介绍与应用
科学计算与仿真-高斯牛顿法的非线性最小二乘问题简单介绍与应用
科学计算与仿真-高斯牛顿法的非线性最小二乘问题简单介绍与应用
|
8月前
|
数据处理 开发工具 开发者
requirement.txt 管理python包依赖
在 Python 项目中,`requirements.txt` 用于记录依赖库及其版本,便于环境复现。本文介绍了多种生成该文件的方法:基础方法使用 `pip freeze`,进阶方法使用 `pipreqs`,专业方法使用 `poetry` 或 `pipenv`,以及手动维护方式。每种方法适用不同场景,涵盖从简单导出到复杂依赖管理,并提供常见问题的解决方案,帮助开发者高效生成精准的依赖列表,确保项目环境一致性。
2386 4
|
12月前
|
固态存储 IDE 开发工具
手把手教你安装Keil MDK5:官方网盘资源+芯片支持包配置详解(附调试实战)
Keil是一款专为嵌入式系统开发设计的集成开发环境(IDE),由德国Keil Software公司开发,后被ARM收购整合为MDK-ARM工具链的一部分。本文详细介绍Keil MDK541的安装步骤、系统要求、运行环境配置及首次使用指南,包括许可证管理、芯片支持包安装和工程模板设置等。同时提供新建STM32工程、编写测试代码的具体操作,并解答常见问题,如缺少DLL文件、语言设置及编译错误处理。附延伸学习资源与版权声明,帮助用户高效上手Keil开发环境。
7857 24
|
PyTorch 算法框架/工具
Jetson学习笔记(四):pth(torch模型文件)转trt(tensorrt引擎文件)实操
关于如何使用torch2trt工具将PyTorch模型转换为TensorRT引擎文件的实操指南。
856 1
Jetson学习笔记(四):pth(torch模型文件)转trt(tensorrt引擎文件)实操
|
安全 Unix Linux
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
126961 65
|
芯片
【TI速成】半小时入门MSPM0G3507简明教程之按键定时器(二)
半小时入门MSPM0G3507简明教程之按键定时器
1428 0
|
数据安全/隐私保护 Docker 容器
docker 部署nexus
要在Docker上部署Nexus,可以按照以下步骤进行操作: 1. 确保已经安装并配置好Docker。可以在官方网站(https://www.docker.com/)上找到适合你操作系统的安装程序,并按照说明进行安装。 2. 搜索并下载Nexus的Docker镜像。在Docker Hub上搜索"Nexus",找到Sonatype官方提供的Nexus Repository Manager的镜像。 3. 使用以下命令从Docker Hub上下载Nexus镜像: ``` docker pull sonatype/nexus3 ``` 4. 运行Nexus容器。使用以下命令创建并运行一个名为"
1600 0