VMware虚拟机中ubuntu使用记录(6)—— 如何标定单目相机的内参(张正友标定法)

news2024/12/25 1:03:09

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、张正友相机标定法
    • 1. 工具的准备
    • 2. 标定的步骤
      • (1) 启动相机
      • (2) 启动标定程序
      • (3) 标定过程的操作
      • (5)可能的报错
    • 3. 标定文件内容解析


前言

张正友相机标定法是一种通过测量相机拍摄棋盘格上的特征点来计算相机内参和畸变参数的方法。这种标定方法简单易行,能够帮助恢复真实世界中的三维信息,提高图像处理和分析的准确性。在计算机视觉和机器视觉领域中具有重要应用价值。

一、张正友相机标定法

在ROS中已经集成了对相机完成标定以及畸变矫正的整个流程,直接在ros中调用即可。

1. 工具的准备

黑白棋盘格
黑白棋盘格是由9×7的黑白格组成。在网上可以找到黑白相机棋盘格的pdf文档(需要的可以找我),下载之后将其打印在A3或者A4纸张上,然后量出其方格边长即可(自己量多少就写多少,单位换为国际单位m)。我使用的A4纸张,最终手动量出来A4的是0.0283m

2. 标定的步骤

(1) 启动相机

启动ROS

打开终端1输入: roscore

启动相机,在catkin_ws目录下
打开终端2输入:

   source devel/setup.bash                    //已生效过环境,可跳过此步
   roslaunch usb_cam usb_cam-test.launch      //usb_cam-test.launch为自己的文件名

(2) 启动标定程序

主目录(home)下打开终端3:

rosrun camera_calibration cameracalibrator.py –size 8×6 –square 0.0283 image:=/usb_cam/image_raw

整个指令输入过程的终端页面如下所示:

在这里插入图片描述

其中,
–size:是上述棋盘的宽度和高度
–square 0.0283:是棋盘的一个小方格的实际尺寸。按自己实际测量的即可,本次测量出来的是28.3毫米,故将square参数改为0.0283即可。
/usb_cam/image_raw:为自己相机的数据的话题

(3) 标定过程的操作

启动标定程序后,弹出以下窗口

在这里插入图片描述

窗口的参数介绍
X:表示标定板在视野中的左右位置。
Y:表示标定板在视野中的上下位置。
Size:标定板在占视野的尺寸大小,也可以理解为标定板离摄像头的远近。
Skew:标定板在视野中的倾斜位置

具体的操作过程:

  1. 标定过程中左右,上下,前后,对角方向前后倾斜标定板,这样使得右边X,Y,Size,Skew变成绿色
  2. X,Y,Size,Skew变成绿色后,CALIBRATE按钮变为蓝色,然后点击(等上半分钟左右)变为下面三个按钮都可以点击
  3. 依次点击SAVE(保存),点击SAVE之后:(‘Wrote calibration data to’, ‘/tmp/calibrationdata.tar.gz’),如下图所示:
    在这里插入图片描述
  4. COMMIT(提交)到相机配置文件中。即可将标定结果保存至本地。

(5)可能的报错

1)问题描述

如果第四步点击COMMIT出现如下报错:

service uri = self. get service uri(request) File
“/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros
service.py”, line 470, in get service uri
raise serviceException(“service [%s] unavailable”%self.resolved name)
rospy.service.ServiceException: service [/camera/set camera info]unavailable

在这里插入图片描述

2) 解决方法
那么只能自行将标定参数移动至:~/.ros/camera_info,具体步骤如下
1.转移到标定文件的存放目录下

cd /tmp

2.解压calibrationdata.tar.gz文件

tar -zxvf calibrationdata.tar.gz

3.将ost.yaml复制到~/.ros/camera_info(若没有camera_info目录,创建一个即可)

在这里插入图片描述

4.将ost.yaml重命名为head_camera.yaml,并修改里面代码

camera_name:head_camera

head_camera.yaml文件内容如下所示:

在这里插入图片描述

最后,使用上述参数的配置文件,重新运行相机的驱动,即可获得较为准确的图像数据

3. 标定文件内容解析

(1) 张正友标定法产生的相机配置文件里:
文件内容对应的参数如下:
camera_matrix:[fx 0 Cx,0 fy Cy,0 0 1]
Distortion_matrix:[k1,k2,p1,p2,k3]

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

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

相关文章

语义分割——铁路轨道数据集

引言 亲爱的读者们,您是否在寻找某个特定数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 重…

typescript 对象数组和函数

typescript 对象数组和函数 对象 在JavaScript中,对象属于非原始类型。对象也是一种符合数组类型,由若干个对象属性构成。对象属性可以是任意数据类型,比如数组,函数或者对象等。当对象属性为函数的时候,称为方法。 …

vue3--element-plus-抽屉文件上传和富文本编辑器

一、封装组件 article/components/ArticleEdit.vue <script setup> import { ref } from vue const visibleDrawer ref(false)const open (row) > {visibleDrawer.value trueconsole.log(row) }defineExpose({open }) </script><template><!-- 抽…

Java与Go: 生产者消费者模型

什么是生产者消费者模型 生产者-消费者模型&#xff08;也称为生产者-消费者问题&#xff09;是一种常见的并发编程模型&#xff0c;用于处理多线程或多进程之间的协同工作。该模型涉及两个主要角色&#xff1a;生产者和消费者&#xff0c;一个次要角色&#xff1a;缓冲区。 生…

全方位解析Node.js:从模块系统、文件操作、事件循环、异步编程、性能优化、网络编程等高级开发到后端服务架构最佳实践以及Serverless服务部署指南

Node.js是一种基于Chrome V8引擎的JavaScript运行环境&#xff0c;专为构建高性能、可扩展的网络应用而设计。其重要性在于革新了后端开发&#xff0c;通过非阻塞I/O和事件驱动模型&#xff0c;实现了轻量级、高并发处理能力。Node.js的模块化体系和活跃的npm生态极大加速了开发…

【React】React-redux多组件间的状态传递

效果&#xff08;部分完整代码在最底部&#xff09;&#xff1a; 编写 Person 组件 上面的 Count 组件&#xff0c;已经在前面几篇写过了&#xff0c;也可以直接翻到最底部看 首先我们需要在 containers 文件夹下编写 Person 组件的容器组件 首先我们需要编写 index.jsx 文件…

一种算法分类方式及其应用

在计算机科学领域&#xff0c;算法是解决问题的有效方法&#xff0c;而对算法进行分类有助于理解它们的特性、优劣以及在不同场景下的应用。常见的算法分类方法&#xff0c;包括按设计思想、问题类型、数据结构和应用领域等&#xff0c;每一类算法会对应有其典型和实际应用。 算…

连接HiveMQ代理器实现MQTT协议传输

先下载MQTTX: MQTTX: Your All-in-one MQTT Client Toolbox 使用线上免费的MQTTX BROKER:The Free Global Public MQTT Broker | Try Now | EMQ 打开MQTTX&#xff0c;创建连接&#xff0c;点击NEW SUBSCRIPTION,创建一个主题&#xff0c;这里使用test/topic,在下面Json中填写…

大语言模型教程与实践(开源)

1.简介 大语言模型&#xff08;Large Language Models, LLMs&#xff09;的兴起确实始于OpenAI在2018年发布的GPT&#xff08;Generative Pre-trained Transformer&#xff09;&#xff0c;这一开创性工作引领了自然语言处理领域的新纪元。随后&#xff0c;2022年底ChatGPT的横…

DDD:根据maven的脚手架archetype生成ddd多模块项目目录结构

随着领域驱动的兴起&#xff0c;很多人都想学习如何进行ddd的项目开发&#xff0c;那ddd的项目结构是怎么样的&#xff1f;又是如何结合SpringBoot呢&#xff1f;那么针对这个问题&#xff0c;笔者使用maven的archetype封装一个相对通用的ddd的项目目录&#xff0c;方便一键生成…

Redisson 分布式锁和同步器

系列文章目录 文章目录 系列文章目录前言前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 redisson 是基于redis的扩展库,使得redis除了应用于缓存以外,还能做队列…

Excel 批量创建sheet页

参考资料 最巧妙的Excel批量创建工作表方法 一. 需求 ⏹有如下模板&#xff0c;现想根据提供的姓名&#xff0c;批量创建sheet页&#xff0c;要求每个sheet页拥有相同的模板 二. 通过透视表&#xff0c;批量创建sheet页面 ⏹如下图所示的步骤&#xff0c;创建透视表后&#…

3.3Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3框架-企业级应用-Vue组合式API

为什么要使用Composition API 一个Options API实例 在前面的课程中&#xff0c;我们都是采用 Options API&#xff08;基于选项的 API &#xff09; 来写一个组件的。下面是一个实例&#xff1a; <template> Count is: {{ count }}, doubleCount is: {{ doubleCount…

brpc中http2 grpc协议解析

搭建gRPC服务 | bRPC https://blog.csdn.net/INGNIGHT/article/details/132657099 global.cpp http2_rpc_protocol.cpp ParseH2Message解析frame header信息 ParseResult H2Context::ConsumeFrameHead( 这个是固定长度的9字节帧头部&#xff0c;length是&#xff0c;3*8bit…

七. Django项目之电商购物商城 -- 退出登录

Django项目之电商购物商城 – 退出登录状态 需要开发文档和前端资料的可私聊 退出登录主要是基于Django自带的logout模块 , 该功能只有在登录是保存了用户状态才可以实现调用 一. 创建退出视图 class LogoutView(View):def get(self , request):# 删除用户数据logout(reque…

etcd源码流程---调试环境的搭建

etcd启动命令&#xff1a; name必须设置&#xff0c;否则会用default&#xff0c;集群内不同etcd实例的名字应该是唯一的&#xff0c;因为他会有一个map(name->ip)。如果initial-cluster-state设置为new&#xff0c;那么他会创建一个新的clusterid。需要在initial-cluster中…

PHP 反序列化

一、PHP 序列化 1、对象的序列化 <?php class people{public $nameGaming;private $NationLiyue;protected $Birthday12/22;public function say(){echo "老板你好呀&#xff0c;我是和记厅的镖师&#xff0c;叫我嘉明就行&#xff0c;要运货吗你&#xff1f;"…

【LeetCode:1235. 规划兼职工作 + 动态规划 + 二分查找】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Unity---版本控制软件

13.3 版本控制——Git-1_哔哩哔哩_bilibili Git用的比较多 Git 常用Linux命令 pwd&#xff1a;显示当前所在路径 ls&#xff1a;显示当前路径下的所有文件 tab键自动补全 cd&#xff1a;切换路径 mkdir&#xff1a;在当前路径下创建一个文件夹 clear&#xff1a;清屏 vim…

能将图片转为WebP格式的WebP Server Go

本文完成于 2023 年 11 月 之前老苏介绍过 webp2jpg-online&#xff0c;可以将 webp 格式的图片&#xff0c;转为 jpg 等&#xff0c;今天介绍的 WebP Server Go 是将 jpg 等转为 webp 格式 文章传送门&#xff1a;多功能图片转换器webp2jpg-online 什么是 WebP ? WebP 它是由…