openpnp - 底部相机视觉识别CvPipeLine的参数bug修正
文章目录
- openpnp - 底部相机视觉识别的CvPipeLine的参数bug
- 概述
- 笔记
- openpnp的视觉识别参数的错误原因
- 备注
- 补充 - 如果要直接改默认的底部视觉要注意
- END
openpnp - 底部相机视觉识别的CvPipeLine的参数bug
概述
底部相机抓起一个SOD323的元件,进行视觉识别。
识别出的矩形错了,是一个很长的长方形,长方形的短边和器件差不多宽,但是长边比器件长10倍。导致识别出错。
因为这时,无论怎么填写封装的长和宽,都无法正确识别。
当识别出错时,用CvPipeLine的Edit功能,找到了问题。
原来是openpnp给的默认识别参数整错了,改了一下OK.
笔记
因为大部分元件识别都是好的,且用的都是默认的底部相机视觉。
所以,有个别元件识别错误后,要针对这个元件进行视觉识别的参数修正,而不能去动默认的底部视觉参数。

FilterContours命令识别的范围多了,导致识别了吸嘴圆形帽子上的一个点,这要继续过滤。
在FilterContours命令后面,默认就有个MaskCircle命令,默认的diameter是0,即不过滤。
这就导致后续命令用的图像在元件很远的地方有个点(FilterContours命令带过来的)
将MaskCircle的参数diameter改为300,基本就圈住了元件附近,再远的图像就用这个圈过滤掉了。

MaskCircle后面默认的后续命令是DrawContours

默认用的输入图像是filterContours的结果,这就不对了,因为针对这个元件,filterContours识别的多了(除了元件,还有离元件很远的一个点)
将DrawContours的参数contourStageName改为11(就是MaskCircle命令实例名称为11的结果), 这回就OK了。
在后续的命令处理后,红框就只框在元件的引脚外框上。
openpnp的视觉识别参数的错误原因
在FilterContours和DrawContours命令之间,加了一个MaskCircle命令(但是MaskCircle默认没做过滤)。
估计官方也考虑到给的视觉识别参数无法适应所有的吸嘴和元件,所以给用户留了一个改正的节点。
但是DrawContours的输入没有用MaskCircle命令的处理结果,这就是bug了。
备注
对openpnp的视觉处理参数也不熟, 主要是官方也没有文档专门讲这个。
以前都用默认的, 如果真出现问题,无奈,还真不知道怎么弄。
这次发现识别的有问题,在设备开着时,抓一个这种元件进行底部相机视觉识别,如果识别错误或者识别的不稳定,这时就可以在线编辑调试视觉识别参数。
还好,经过简单的修改,能正确识别了。
虽然不太懂官方为啥给这些命令进行图像识别的处理,但是大概齐知道啥意思。
图像识别处理的大概流程如下:
- 从摄像头捕获图像
- 进行颜色转换
- 用蒙版屏蔽不需要的区域(e.g. 吸嘴/元件以外的区域)
- 转成黑白图像
- 画出最小矩形
- 重新载入摄像头的图像
- 将矩形换成红色显示
补充 - 如果要直接改默认的底部视觉要注意
元件的默认底部视觉都是全局的默认底部视觉。
最好是每个封装单独给一个配置,来改视觉。
开始没注意,直接改的底部视觉。
因为加入了MaskCircle命令名字为11,参数diameter值改为了300,其他用默认底部视觉的元件出现了奇怪问题。
e.g. LQFP32元件对齐后,居然是45度。导致贴到板子上角度也是错的。
如果要改全局视觉,MaskCircle命令名字为11,参数diameter值应该改为-1,代表不过滤任何图像,即输入图像直接转成输出图像。

END
相关文章:
openpnp - 底部相机视觉识别CvPipeLine的参数bug修正
文章目录 openpnp - 底部相机视觉识别的CvPipeLine的参数bug概述笔记openpnp的视觉识别参数的错误原因备注补充 - 如果要直接改默认的底部视觉要注意END openpnp - 底部相机视觉识别的CvPipeLine的参数bug 概述 底部相机抓起一个SOD323的元件,进行视觉识别。 识别…...
C#从零开始学习(接口,强制转化和is)(7)
有时根据对象能做什么来分组,而不是根据他们继承的类.这就引入了接口 让无关的类做相同的动作 接口定义一个类必须实现的方法和属性 一个类实现一个接口时,必须包含接口中列出的所有方法和属性 向下强制转化 Appliance是CoffeeMaker的基类 Appliance powerConsumer new Co…...
算法Day-8
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元…...
屏蔽小米电视广告的方法
小米电视那个广告,太多,时间太长,影响观看感受,经过处理,成功屏蔽了小米电视的广告,提升了观影体验。 手动添加AD域名到 hosts 列表 小米(红米)电视关闭开机AD屏蔽hosts方法。 在路由器的hosts中配置。 …...
C#,自动驾驶技术,ASAM OpenDRIVE BS 1.8.0 规范摘要与C# .NET Parser
本文介绍自动驾驶技术的标准之一《ASAM OpenDRIVE》1.8.0 版本的规范摘要,及北京联高软件开发有限公司实现的 C# 版本 xodr 文件(XML) Parser 源代码。 本文档是 ASAM e.V. 的版权财产。 在更改常规许可条款时,ASAM 允许不受限制地…...
玩转PyCharm:常用操作和快捷键
常用操作和快捷键 PyCharm为写Python代码提供了自动补全和高亮语法功能,这也是PyCharm作为集成开发环境(IDE)的基本功能。PyCharm的“File”菜单有一个“Settings”菜单项(macOS上是在“PyCharm”菜单的“Preferences…”菜单项&…...
HeterGCL 论文写作分析
HeterGCL 论文写作分析 这篇文章,由于理论证明较少,因此写作风格了polygcl是两种风格的。polygcl偏向理论的写作风格,而hetergcl就是实践派的风格 首先看标题,其的重点是Graph contrastive learning Framework。其重点是framewo…...
简单的windows java -jar 无法启动jar包解决方法
简单的windows java -jar 无法启动jar包解决方法 1. 问题 我们项目是使用nacos作为注册中心以及配置中心,我们本地使用idea 进行服务配置以及启动发现没有问题,然后我们的服务经过maven install 打包后发布到LINUX服务启动也没有问题,但是我…...
iPhone图片/照片/视频复制到win10系统的简单方法 - 照片导出
效果图 不同方法: 【推荐】爱思助手 一步到位....【不推荐,会错漏很多照片】 1) 开始,打开开始菜单最后一个“照片” 2) 打开外部设备“Apple iPhone” 3) 全选,“添加xx项”,选择本地...
ctfshow-文件上传-151-161
CTFshow文件上传 PHP文件上传:1、代码思路 黑名单是设置不能通过的用户,黑名单以外的用户都能通过。 phtml、pht、php3、php4、php5后缀都会按做php文件执行,且不在黑名单内。 2、绕过 找漏网之鱼:cer、php3、php4、phtml等。 大小写绕…...
【Windows】Microsoft Office 的 .docx .xlsx .pptx 等文件图标消失,变成空白图标
问题描述 在重新安装 Microsoft Office 后,发现 .docx、.xlsx、.pptx 等文件的图标消失,变成一个空白的图标。 原因分析 可能是由于Office组件的快捷方式和图标的注册表损坏所导致的。注册表是Windows操作系统中用来存储系统和应用程序配置信息的一个重…...
场景化运营与定制开发链动 2+1 模式 S2B2C 商城小程序的融合
摘要:本文深入探讨了场景化运营的重要性以及其在商业领域的广泛应用。通过分析电梯广告、视频网站和电商产品的场景化运营方式,引入关键词“定制开发链动 21 模式 S2B2C 商城小程序”,阐述了如何将场景化运营理念融入到该小程序的开发与推广中…...
Axure中继器实现时间读取和修改
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:中继器实现时间读取和修改 主要内容:中继器内不同时间格式的向外读取,和向内赋值,实现中继器时间的修改 应用场…...
数据库聚合函数
数据库聚合函数 聚合函数 sum ,avg,max,min,count 1总分 SELECT SUM(student_result) FROM result; SELECT student_no,SUM(studet_result) FROM result WHERE student_no62平均分 avg SELECT AVG(studet_result) FROM result;3最大值 max 最小值 min SELECT MAX(studet_r…...
DevOps的文化观与工具
一、DevOps的文化 DevOps的核心文化是推动开发(Development)和运维或需求(Operations)团队之间的协作与沟通,以实现更快速、更可靠的软件交付。以下是DevOps核心文化的几个关键方面: 协作与沟通࿱…...
create-vite my-vite-uniapp-project
搭建一个使用 Vue 3、TypeScript、Vite、uni-app、uView UI库和Element Plus的项目,你可以遵循以下步骤: 安装 Node.js 和 npm。 使用以下命令全局安装 Vue CLI: npm install -g vue/cli创建一个新的 Vue 3项目,并选择 TypeScr…...
DC系列靶机-DC8
一,环境的搭建 VM17 官网下载 kali 2023.4版 https://mirrors.tuna.tsinghua.edu.cn/kali-images/kali-2023.4/ 靶场文件 https://download.vulnhub.com/dc/DC-8.zip 二,攻略 首先nmap一通扫; 扫描主机IP和端口; 靶机的地址…...
重构复杂简单变量之用对象替换数据值
对象替换数据值用于将简单的数据值替换为具有行为和逻辑的对象。这种优化的目的在于提高代码的可读性、灵活性和可维护性,尤其是在数据开始承载更多含义或行为的时候。 一、什么时候使用 当我们在代码中使用简单的数据值(如字符串、整数)表…...
我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布
我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布 在科技日新月异的今天,操作系统作为数字世界的基石,其重要性不言而喻。近日,华为公司在深圳隆重举行了原生鸿蒙操作系统发布会,向全球宣告了我国首个自主可控的移动…...
Spring Boot技术栈在论坛网站开发中的应用
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
Unity中的transform.up
2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...
