findCirclesGrid检测不到圆点棋盘格技术原因分析与解决方案

news2024/11/17 15:46:06

为什么你检测不到圆点标定板

简介

某日,同事反映某厂的标定板无法识别,经过多次尝试,依旧失败。最后被总结为非标尺寸标定板导致。隐隐觉的这不是真正的原因,标定板本身可以自行设计成为各种不同的参数。这让我想起几年前也遇到过相同的问题,依稀记得解决方案。重复实验成功后在此记录。
请添加图片描述

圆形标定板的识别方法

圆点棋盘格的分类和尺寸判别方法

圆点棋盘格分为对称和非对称。如下图(左:对称,右:非对称)
远点标定板
需要着重讨论的是如何确定标定板的行列数。对称板无需讨论,尺寸为行和列的圆点数量,行列转置依旧可以正常识别。如下图,5行4列与4列5行均可识别。

对称标定板的识别
比较容易让人混乱的,是非对称圆点标定板的行和列的确定。在此明确,非对称圆点标定板的列数是两个相邻行的折线路线的所有圆点行数是最边上一列的圆点个数。因此,下图中棋盘格的数量是6行17列,注意,程序中输入的参数为cv::Size(6,17)而非(17,6)。其第一个参数是行数而不是行的宽度(width)。
非对称标定板尺寸数法
因此有以下结论:

  • 非对称标定板一行有相邻的两行。
  • 非对称标定板的行列一般不能转置。
API接口

与棋盘格检测不同,圆点检测采用的函数接口是cv2.findCirclesGrid。此外,有必要初始化一个圆点检测器替换其默认的检测器。为了方便调整参数,还额外需要一个SimpleBlobDetector_Params对象设置参数:

params = cv2.SimpleBlobDetector_Params()
blobDetector = cv2.SimpleBlobDetector_create(params)
found, corners = cv2.findCirclesGrid(image, 
                                    grid_size, 
                                    cv2.CALIB_CB_SYMMETRIC_GRID,
                                    blobDetector, 
                                    None)

对于对称棋盘格,采用cv2.CALIB_CB_SYMMETRIC_GRID,非对称采用cv2.CALIB_CB_ASYMMETRIC_GRID。grid_size根据上文,严格按照行列参数进行填写。最后,最后最重要的是通过SimpleBlobDetector_Params设置SimpleBlobDetector的参数。

SimpleBlobDetector::Params

往往检测失败的原因是采用了默认的圆点检测器参数以及弄错了行列数量。能够修改的参数有:
请添加图片描述其中,filterBy开头的参数指定了是否打开检测圆的基本性质,分别是面积,圆度,颜色,凸度。其余参数用于设置这些参数的最值。此外阈值通过最值,进行阶梯形变化检测。

因此,这里对于一些图像尺寸较大的情况,检测器默认的最大面积参数很难覆盖目标圆点。需要修改maxArea到一个较大的数值。另外通过filterByArea指定检测黑点还是白点,这意味着反选将不能够检测到目标标定板。

检测非对称圆点标定板

检测(4,11)非对称标定板
请添加图片描述
检测(11,4)非对称标定板:
请添加图片描述
检测某标定板:
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Windows上安装Git

一、下载Git安装包 访问Git官网:首先,你需要访问Git的官方网站下载安装包:在官网页面上,找到并点击“Downloads”按钮,然后选择“Windows”系统对应的安装包进行下载。安装包通常以.exe格式提供 二、安装Git 双击运…

错误解决 ---- Unexpected lexical declaration in case block no-case-declarations

1. 报错提示 154:15 error Unexpected lexical declaration in case block no-case-declarations154:21 error resId is assigned a value but never used no-unused-vars158:15 error Unexpected lexical declaration in case block no-case-declarations158:21 e…

Excel中如何批量删除括号里的内容

一、问题的缘起 微信群里有人问,如何在Excel中删除1列单元格中的括号和其中的人名,如下图所示。传统一个个删除,不仅太麻烦,还有可能出错。有没有什么便捷的办法呢,今天我们一起来分享五种不错的解决方法。 图示 二、…

突发!OpenAI CTO Murati 官宣离职

2024 年 9 月 26 日,OpenAI 首席技术官 Mira Murati 宣布将离开 OpenAI ,这一令人意外的举动标志着这家公司近期迎来另一名重要高管的离职。 Murati 在 X 上的一篇帖子中写道:“我离开公司是由于我想腾出时间和空间来进行自己的探索”&#x…

算法: 滑动窗口题目练习

文章目录 滑动窗口长度最小的子数组无重复字符的最长子串最大连续1个个数 III将x减到0的最小操作数水果成篮找到字符串中所有字母异位词串联所有单词的子串最小覆盖子串 总结 滑动窗口 长度最小的子数组 做这道题时,脑子里大概有个印象,知道要用滑动窗口,但是对于滑动窗口为什…

基于 LangChain 的自动化测试用例的生成与执行

在前面的章节中,分别介绍了 Web、App、接口自动化测试用例的生成。但是在前文中实现的效果均为在控制台打印自动化测试的用例。用例需要手动粘贴,调整之后再执行。 那么其实这个手动粘贴、执行的过程,也是可以直接通过人工智能完成的。 应用…

基于springboot+vue学生宿舍管理系统设计与实现

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

【PyTorch】环境配置

Window11RTX4060配置CUDA11.8pytorch2.0.0 下载CUDA11.8 进入官网下载Link,然后点击Archive of Previous CUDA Releases,找到对应版本11.8。 选择对应操作系统版本,点Download下载到本地。 下载cuDNN 点击链接Link,找到CU…

【Java】多线程基础操作

多线程基础操作 Thread类回顾Thread类观察线程运行线程的休眠常用方法构造方法属性获取方法 中断线程线程状态线程等待 初识synchronized问题引入初步使用初步了解可重入锁死锁 volatile问题引入初步使用volatile 与 synchronized 线程顺序控制初步了解wait()notify()防止线程饿…

有效解决配置管理混乱,麒麟桌面操作系统V10 sp1 2403最新版本推出统一配置系统

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 当前桌面操作系统中可通过配置定义的应用有限&a…

分享一个基于python的智慧居家养老服务平台 django社区养老管理系统与可视化统计(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

JavaScript的条件语句

if条件语句 if结构先判断一个表达式的布尔值,然后根据布尔值的真伪,执行不同的语句。所谓布尔值,指的是JavaScript 的两个特殊值,true表示真,false表示伪。 if语句语法规范 if(布尔值){语句;}var m3if(m3){console.l…

注意 秋季饮酒的正确打开方式

选择合适的白酒1.秋季气候干燥,适合选择一些口感醇厚、温润的白酒。比如酱香型白酒,它具有浓郁的香气和醇厚的口感,能在秋季给你带来温暖的感觉。2.浓香型白酒也是不错的选择,香气扑鼻,口感绵甜,能为秋季增…

基于nodejs+vue的宠物医院管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

外包干了两年,收获真不少...

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

99%的人都不知道的AI绘图变现赚钱秘诀,都在这里了!

AI绘画发展至今,已经有很多实际落地的应用场景,这里介绍几种AI绘图热门变现方式 AI儿童绘本 各大平台上故事绘本、幼儿园儿歌、英文绘本、古诗词,从下图里,可以看出需求量很大 AI儿童绘本 实现方式 \1. gpt\2. leonardo.ai\3.…

Find My汽车钥匙|苹果Find My技术与钥匙结合,智能防丢,全球定位

随着科技的发展,传统汽车钥匙向智能车钥匙发展,智能车钥匙是一种采用先进技术打造的汽车钥匙,它通过无线控制技术来实现对车门、后备箱和油箱盖等部件的远程控制。智能车钥匙的出现,不仅提升了汽车的安全性能,同时也让…

敏感内容识别技术有哪些? (敏感信息防泄密解决方案)

随着信息化进程的加快,越来越多的企业面临着敏感信息泄露的风险。为了防止机密数据被不当传播,敏感内容识别技术成为信息安全管理中的关键环节。 这些技术能够自动识别和分类企业内部的敏感数据,并采取相应的防护措施,有效防止数…

在GPU计算型实例中安装Tesla驱动超详细过程

摘要:在深度学习、AI等通用计算业务场景或者OpenGL、Direct3D、云游戏等图形加速场景下,安装了Tesla驱动的GPU才可以发挥高性能计算能力,或提供更流畅的图形显示效果。如果您在创建GPU计算型实例(Linux)时未同时安装Te…

linux-windows挂载NFS

挂载NFS linux安装Windows安装连接完成设置开机自启动linux开机自启动windows开机自启动 卸载NFSlinux 使用NFS共享将Linux系统上的磁盘映射到Windows电脑上作为本地磁盘。 linux安装 1.安装NFS服务: sudo apt-get install nfs-kernel-server2.编辑/etc/exports文…