OpenCV相机标定全过程

这篇具有很好参考价值的文章主要介绍了OpenCV相机标定全过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、OpenCV标定的几个常用函数


findChessboardCorners() 棋盘格角点检测

bool findChessboardCorners( InputArray image,
                                Size patternSize,
                                OutputArray corners,
                                int flags = CALIB_CB_ADAPTIVE_THRESH +
                                CALIB_CB_NORMALIZE_IMAGE );

第一个参数是输入的棋盘格图像(可以是8位单通道或三通道图像);

第二个参数是棋盘格内部的角点的行列数(注意:不是棋盘格的行列数,如棋盘格的行列数分别为4、8,而内部角点的行列数分别是3、7,因此这里应该指定为cv::Size(3, 7));

第三个参数是检测到的棋盘格角点,类型为std::vectorcv::Point2f。

第四个参数flag,用于指定在检测棋盘格角点的过程中所应用的一种或多种过滤方法,可以使用下面的一种或多种,如果都是用则使用OR:

cv::CALIB_CB_ADAPTIVE_THRESH:使用自适应阈值将图像转化成二值图像

cv::CALIB_CB_NORMALIZE_IMAGE:归一化图像灰度系数(用直方图均衡化或者自适应阈值)

cv::CALIB_CB_FILTER_QUADS:在轮廓提取阶段,使用附加条件排除错误的假设

cv::CALIB_CV_FAST_CHECK:快速检测

cv::drawChessboardCorners() 棋盘格角点的绘制

drawChessboardCorners( InputOutputArray image,

                           Size patternSize,
                           InputArray corners,
                           bool patternWasFound );

image为8-bit,三通道图像

patternSize,每一行每一列的角

corners,已经检测到的角

patternWasFound,findChessboardCorners的返回值


find4QuadCornerSubpix() 对粗提取的角点进行精确化

find4QuadCornerSubpix( InputArray img,
                           InputOutputArray corners,
                           Size region_size );

image源图像

corners,提供角点的初始坐标

region_size: 搜索窗口的一般尺寸

cornerSubPix() 亚像素检测

void cornerSubPix( InputArray image,
                       InputOutputArray corners,
                       Size winSize,
                       Size zeroZone,
                       TermCriteria criteria );

image源图像

corners,提供角点的初始坐标,返回更加精确的点

winSize,搜索窗口的一般尺寸,如果winSize=Size(5,5),则search windows为1111

winSize,死区的一般尺寸,用来避免自相关矩阵的奇点文章来源地址https://www.toymoban.com/news/detail-440774.html

到了这里,关于OpenCV相机标定全过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • opencv-python学习笔记(十一):HOG+SVM进行行人检测全过程

    opencv-python学习笔记(十一):HOG+SVM进行行人检测全过程

    本次是接着python-opencv学习笔记(七):滑动窗口与图像金字塔 一起在实验楼所做实验,为啥中间隔了四篇才接着发出来,主因是我发文比较随意(懒),当时这部分并没有总结完,至少我感觉我看的相关资料还不够多,整体理解不深,另外就是项目需求,在做很多其它的东

    2024年02月05日
    浏览(11)
  • Win10 下编译 OpenCV 4.7.0详细全过程,包含xfeatures2d

    Win10 下编译 OpenCV 4.7.0详细全过程,包含xfeatures2d

    在Win10下编译 OpenCV 4.7.0过程中,踩了几个坑,这里记录下来,供大家参考。 1. 下载源文件 GitHub上下载OpenCV 4.7.0源文件,及opencv_contrib-4.7.0,如果不方便下载,以下是百度网盘链接,有需要可自取 链接:https://pan.baidu.com/s/1qP2aL9712YtuYM1zBeh1bg?pwd=7btf 提取码:7btf   建议三个文件

    2024年02月03日
    浏览(7)
  • 深入浅出opencv人脸识别,准确率95%,云服务器数据库存储人脸信息,代码全过程讲解以及心得

    深入浅出opencv人脸识别,准确率95%,云服务器数据库存储人脸信息,代码全过程讲解以及心得

    此文章记录自己从实现人脸识别到把识别到的数据上传到云端的数据库,随时随地只要有网就能登录服务器,查看人员进出的情况。我会把我记得的所有的错误和经验都分享出来,希望能对大家有所帮助也是对自己的一个总结。 1:人脸采集: 首先输入学号和姓名,设定一个

    2024年02月06日
    浏览(14)
  • 香橙派/树莓派 电脑linux 电赛备赛指南-opencv全过程最简安装,ssh,vnc,USB摄像头驱动和配置环境避坑,手把手教学。opencv视觉入门(一)

    香橙派/树莓派 电脑linux 电赛备赛指南-opencv全过程最简安装,ssh,vnc,USB摄像头驱动和配置环境避坑,手把手教学。opencv视觉入门(一)

    老早就想写博客了把之前的项目都记录下来,但是一直碍于每次做完项目都挺累的,于是就偷懒没写,不过每次做完都有总结,现在已经大三了,觉得应该把自己之前学习过程中遇到的经验或者坑写出来,后面会陆陆续续的发出来,今天先来讲一下有关这份博客的前提背景吧

    2024年04月08日
    浏览(12)
  • ElasticSearch-安装部署全过程

    ElasticSearch-安装部署全过程

    本文已收录于专栏 《中间件合集》   是一个开源的分布式搜索和分析引擎,它建立在 Apache Lucene 搜索引擎库之上。它提供了一个分布式、多租户的全文搜索引擎,具有强大的实时搜索和分析能力。Elasticsearch 是用 Java 语言编写的,并且提供了 RESTful API,使其易于集成和使用

    2024年02月12日
    浏览(11)
  • HTTPS】HTTPS过程详解,tcpdump抓包 全过程分析

    HTTPS】HTTPS过程详解,tcpdump抓包 全过程分析

    RFC中的HTTPS交互过程如下: 客户端支持的TLS最高版本号 客户端生成的随机数 客户端支持的加密套件 主机名server_name cipher suite怎么理解 名字为 ECDH-ECDSA-AES128-SHA256 的CipherSuite 使用 ECDH做密钥交换, 使用ECDSA做认证, 使用AES-128做加密算法, 使用SHA256做MAC算法。 客户端能支持的

    2024年02月11日
    浏览(10)
  • Java对象创建回收全过程

    Java对象创建回收全过程

    目录 1 前言 2 Java对象创建 2.1  类加载检查 2.1.1 谁来加载 2.1.2 如何加载 2.2 分配内存 2.3 初始化零值 2.4 设置对象头 2.5 执行clinit 3 对象回收 4 补充Tomcat打破双亲委派机制 在讲java创建之前,我们先来了解下 Java虚拟机内存 组成,当Java虚拟机启动后,会将系统分配给JVM的空间逻

    2024年02月14日
    浏览(13)
  • Tomcat处理请求的全过程

    Tomcat处理请求的全过程

    在Tomcat处理客户端请求的过程中,这里面有三个组件概念,他们都是线程,分别负责不同的职责。 (必须记清楚这三个线程组件) Acceptor 一个普通线程任务,用于接收新连接,并将新连接封装,选择一个 Poller 将新连接添加到 Poller 的事件队列中。 Poller 一个线程任务,用于

    2024年01月20日
    浏览(11)
  • 永恒之蓝全过程复现

    永恒之蓝全过程复现

    一,永恒之蓝简介 永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。5月12日,不法分子通过改造“永恒之蓝”制作了wannacry勒索病毒, 英国

    2024年02月12日
    浏览(9)
  • linux安装docker全过程

    linux安装docker全过程

    3. 第二步:设置docker的存储库。就两条命令,我们直接执行就好。 ​ ​ 4. 安装docker engine和docker-compose。 执行命令: ​ 等到屏幕输出success后,我们输入docker -v 。如果输出了它的版本号那么就证明docker安装好了。输入 docker compose version 如果也输出了版本号,则证明 docker-co

    2024年02月10日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包