VMware虚拟机中ubuntu使用记录(6)—— 如何标定单目相机的内参(张正友标定法)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、张正友相机标定法
- 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:标定板在视野中的倾斜位置
具体的操作过程:
- 标定过程中左右,上下,前后,对角方向前后倾斜标定板,这样使得右边X,Y,Size,Skew变成绿色
- X,Y,Size,Skew变成绿色后,CALIBRATE按钮变为蓝色,然后点击(等上半分钟左右)变为下面三个按钮都可以点击
- 依次点击SAVE(保存),点击SAVE之后:(‘Wrote calibration data to’, ‘/tmp/calibrationdata.tar.gz’),如下图所示:

- 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]
相关文章:
VMware虚拟机中ubuntu使用记录(6)—— 如何标定单目相机的内参(张正友标定法)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、张正友相机标定法1. 工具的准备2. 标定的步骤(1) 启动相机(2) 启动标定程序(3) 标定过程的操作(5)可能的报错 3. 标定文件内容解析 前言 张正友相机标定法…...
每日OJ题_记忆化搜索②_力扣62. 不同路径(三种解法)
目录 力扣62. 不同路径 解析代码1_暴搜递归(超时) 解析代码2_记忆化搜索 解析代码3_动态规划 力扣62. 不同路径 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器…...
【微信小程序开发】微信小程序、大前端之flex布局方式详细解析
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
代码随想录算法训练营第二十天:二叉树成长
代码随想录算法训练营第二十天:二叉树成长 110.平衡二叉树 力扣题目链接(opens new window) 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝…...
Opensbi初始化分析:设备初始化-warmboot
Opensbi初始化分析:设备初始化-warmboot 设备初始化sbi_init函数init_warmboot函数coolboot & warmbootwait_for_coldboot函数domain && scratch(coldboot所特有)console初始化及print相关工作(coldboot所特有)系统调用的相关初始化(coldboot所特有)综上设备…...
软考 系统架构设计师系列知识点之软件可靠性基础知识(13)
接前一篇文章:软考 系统架构设计师系列知识点之软件可靠性基础知识(12) 所属章节: 第9章. 软件可靠性基础知识 第3节 软件可靠性管理 为了进一步提高软件可靠性,人们又提出了软件可靠性管理的概念,把软件可…...
将ESP工作为AP路由模式并当成服务器
将ESP8266模块通过usb转串口接入电脑 ATCWMODE3 //1.配置成双模ATCIPMUX1 //2.使能多链接ATCIPSERVER1 //3.建立TCPServerATCIPSEND0,4 //4.发送4个字节在链接0通道上 >ATCIPCLOSE0 //5.断开连接通过wifi找到安信可的wifi信号并连接 连接后查看自己的ip地址变为192.168.4.…...
Python深度学习基于Tensorflow(6)神经网络基础
文章目录 使用Tensorflow解决XOR问题激活函数正向传播和反向传播解决过拟合权重正则化Dropout正则化批量正则化 BatchNormal权重初始化残差连接 选择优化算法传统梯度更新算法动量算法NAG算法AdaGrad算法RMSProp算法Adam算法如何选择优化算法 使用tf.keras构建神经网络使用Sequ…...
力扣HOT100 - 35. 搜索插入位置
解题思路: 二分法模板 class Solution {public int searchInsert(int[] nums, int target) {int left 0;int right nums.length - 1;while (left < right) {int mid left ((right - left) >> 1);if (nums[mid] target)return mid;else if (nums[mid…...
MinimogWP WordPress 主题下载——优雅至上,功能无限
无论你是个人博客写手、创意工作者还是企业站点的管理员,MinimogWP 都将成为你在 WordPress 平台上的理想之选。以其优雅、灵活和功能丰富而闻名,MinimogWP 不仅提供了令人惊叹的外观,还为你的网站带来了无限的创作和定制可能性。 无与伦比的…...
kube-prometheus部署到 k8s 集群
文章目录 **修改镜像地址****访问配置****修改 Prometheus 的 service****修改 Grafana 的 service****修改 Alertmanager 的 service****安装****Prometheus验证****Alertmanager验证****Grafana验证****卸载****Grafana显示时间问题** 或者配置ingress添加ingress访问grafana…...
从0开始学习python(六)
目录 前言 1、循环结构 1.1 遍历循环结构for 1.2 无限循环结构while 总结 前言 上一篇文章我们讲到了python的顺序结构和分支结构。这一章继续往下讲。 1、循环结构 在python中,循环结构分为两类,一类是遍历循环结构for,一类是无限循环结…...
OpenGL 入门(三)—— OpenGL 与 OpenCV 共同打造大眼滤镜
从本篇开始,会在上一篇搭建的滤镜框架的基础上,介绍具体的滤镜效果该如何制作。本篇会先介绍大眼滤镜,先来看一下效果,原图如下: 使用手机后置摄像头对眼部放大后的效果: 制作大眼滤镜所需的主要知识点&…...
Linux服务器安全基础 - 查看入侵痕迹
1. 常见系统日志 /var/log/cron 记录了系统定时任务相关的日志 /var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 /var/log/secure:记录登录系统存取数据的文件;例如:pop3,ssh,telnet,ftp等都会记录在此. /var/log/btmp:记…...
Java反射机制的实战应用:探索其魅力与局限
引言 Java作为一种面向对象的编程语言,其灵活性和强大的功能使其成为众多开发者的首选。而Java反射机制作为Java语言中的一项重要特性,为程序员提供了一种在运行时检查和操作类、方法、属性等信息的能力。本文旨在深入探讨Java反射机制的实战应用&#…...
vue3项目 文件组成
从头捋顺一遍vue3项目文件目录 前置知识JS模块化什么是依赖?安装依赖webpack能做什么?vue基本使用 不借助vue-cli,从0开始搭建vue项目。index.html、main.js、App.vue引入npm引入webpack引入babel引入vue-loaderwebpack配置webpack配置 前置知…...
C语言关键字 typedef 的功能是什么?
一、问题 语⾔有 32 个关键字,其中 int 的功能是声明整型变量,struct 的功能是声明结构体变量,那么 typedef 的功能是什么呢? 二、解答 1. typedef 的功能 在 C 语⾔中除了可以使⽤标准类型名(如 int、 char、float …...
【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台-源码下载与项目配置
基于.NET Framework 4.8 开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等应用场景,同时支持图像与视频检测。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runtime以及OpenCV DNN,支持CPU、IGP…...
如何在 Ubuntu 12.04 VPS 上使用 MongoDB 创建分片集群
简介 MongoDB 是一个 NoSQL 文档数据库系统,可以在水平方向上很好地扩展,并通过键值系统实现数据存储。作为 Web 应用程序和网站的热门选择,MongoDB 易于实现并可以通过编程方式访问。 MongoDB 通过一种称为“分片”的技术实现扩展。分片是将…...
阿里云VOD视频点播流程(1)
一、开通阿里云VOD 视频点播(ApsaraVideo VoD,简称VOD)是集视频采集、编辑、上传、媒体资源管理、自动化转码处理、视频审核分析、分发加速于一体的一站式音视频点播解决方案。登录阿里云,在产品找到视频点播VOD ,点击…...
新手避坑指南:Unity工程里这6个文件夹,一个都别乱动(含ProjectSettings详解)
Unity工程目录安全手册:新手必须掌握的6个核心文件夹管理法则 刚接触Unity开发时,面对工程目录里那些神秘的文件夹,你是否曾犹豫过"这个能删吗?那个能改吗?"——我完全理解这种困惑。三年前接手第一个商业项…...
系统化调试方法论:从STOP到DETECT,告别救火式排查
1. 项目概述:一套源自实战的系统化调试方法论如果你是一名开发者,或者正在和AI Agent打交道,大概率都经历过这种场景:线上服务突然报错,你心急火燎地登录服务器,看着日志里一堆堆的异常信息,脑子…...
picdone
链接:https://pan.quark.cn/s/849b9ab09851支持对图片进行基础的裁剪、格式转换,背景去除、尺寸调整、体积压缩、添加水印、证件照处理的功能,处理好后可直接下载PNG到本地。...
【实战复盘】Win11 23H2 微信图片拖拽至抖店失效:跨越注册表修复的降级排障SOP
一、 故障描述与初始环境故障现象:用户无法将微信聊天窗口内的图片,直接拖拽至“抖店工作台”聊天输入框中,系统表现为拖拽操作被拦截或无响应。故障环境:Windows 11 23H2 版本。前置历史:该故障电脑此前拖拽功能正常&…...
VMware macOS 虚拟机终极解锁指南:Unlocker 3.0 完整使用教程
VMware macOS 虚拟机终极解锁指南:Unlocker 3.0 完整使用教程 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术日益普及的今天,VMware Workstation 和 Player 用户经…...
MCP图像生成服务器:在IDE中无缝集成AI绘图,提升开发与设计效率
1. 项目概述:一个能“听懂人话”的智能图像生成服务器 如果你和我一样,经常在 Cursor、Claude Code 这类 AI 编程工具里写代码、做设计,那你肯定遇到过这样的场景:脑子里有个很棒的视觉创意,比如“一个赛博朋克风格的…...
【紧急通告】DeepSeek-R1毒性分类器存在语境盲区?3小时内验证并热修复的4种API级补丁
更多请点击: https://intelliparadigm.com 第一章:【紧急通告】DeepSeek-R1毒性分类器存在语境盲区?3小时内验证并热修复的4种API级补丁 近期社区报告指出,DeepSeek-R1毒性分类器在处理嵌套反讽、多轮对话上下文拼接及跨语言混合…...
如何用MIKE IO快速上手水文数据分析:Python数据处理终极指南
如何用MIKE IO快速上手水文数据分析:Python数据处理终极指南 【免费下载链接】mikeio Read, write and manipulate dfs0, dfs1, dfs2, dfs3, dfsu and mesh files. 项目地址: https://gitcode.com/gh_mirrors/mi/mikeio MIKE IO是一个功能强大的Python开源库…...
Deep Multiview Clustering by Contrasting Cluster Assignments
通过对比不同的聚类分配实现深度多视图聚类摘要深度学习在大规模多视图聚类上表现好,但是该领域如何学习不同视图的潜在表示仍是一个问题。作者认为不同视图之间应该对齐的不是中间层特征,而是最后的聚类分配结果。因此提出 CVCL,通过对比不同…...
FreeRTOS和RT-Thread的内存管理实战:如何正确使用pvPortMalloc与rt_malloc替代C库malloc
FreeRTOS与RT-Thread内存管理实战:从标准库陷阱到RTOS最佳实践 在嵌入式实时操作系统开发中,动态内存分配就像高空走钢丝——一步失误可能导致系统崩溃。传统C库的malloc/free在RTOS环境中如同穿着拖鞋走钢丝,而pvPortMalloc和rt_malloc则是专…...
