kalibr标定单相机,自用指南,防忘记
1. 标定环境
1.1 从源码编译(linux环境,建议ubuntu 18或20)
步骤见 kalibr wiki
1.2 Docker
- 如果实体机为Ubuntu,则见official docker
- 如果实体机为windows环境,则在docker hub中找使用量最高的那个,我找的是stereolabs/kalibr,虽然有好几年没有更新了
2. 使用方法
2.1 修改aprilgrid.yaml,测量标定纸得出具体数据
target_type: 'aprilgrid' #gridtype 标定纸类型
tagCols: 8 #number of apriltags 列数
tagRows: 6 #number of apriltags 行数
tagSize: 0.05 #size of apriltag, edge to edge [m] 每个色块大小,单位为m,似乎是从这个色块起点到下个色块的起点
tagSpacing: 0.30 #ratio of space between tags to tagSize 两个色块中间的空隙占整个色块的比例
2.2 截图方法
def save_img():
cam_url = 'rtsp://admin:admin@192.168.1.11/cam/realmonitor?channel=1&subtype=0' # 相机的rtsp地址
vc = cv2.VideoCapture(cam_url) # 读入视频文件
rval = vc.isOpened()
pic_path = 'prefix/cam/cam0/' # prefix可自定义,但是cam/cam0似乎不能改
if not os.path.exists(pic_path):
os.makedirs(pic_path)
while rval: # 循环读取视频帧
try:
rval, frame = vc.read()
if rval:
tns = str(time.time_ns())
# 存储为图像,保存名为 当前时间的纳秒数.jpg
cv2.imwrite(pic_path + tns + '.png', frame)
print(tns)
cv2.waitKey(20)
else:
cv2.waitKey(20)
except StandardError:
cv2.waitKey(20)
print("occure an error\n")
continue
vc.release()
2.3 标定命令
当前所在文件夹为 截图代码中的prefix文件夹,里面只有cam文件夹
kalibr_bagcreater --folder ./cam/ --output-bag awsome.bag # 将cam文件夹打包为awsome.bag,并保存到当前目录下,
# 等待命令执行完,需要一段时间
kalibr_calibrate_cameras --target ../../aprilgrid.yaml --bag ./awsome.bag --models pinhole-radtan --topics /cam0/image_raw # 记得替换 aprilgrid.yaml 和 awsome.bag 的路径,建议使用相对路径,便于复用
2.4 标定结果
- 如果为物理机标定
- camchain-awsome.yaml
- results-cam-awsome.txt
- report-cam-awsome.pdf
- 如果为docker标定
- camchain-awsome.yaml
- results-cam-awsome.txt
- docker标定没有report-cam-awsome.pdf文件
3. 注意事项和问题
- 标定时,如果挥舞标定板,则不要穿黑白格子衫,穿了会死活标定不出来
- 如果出现问题
Cameras are not connected through mutual observations, please check the data,参照Kalibr单目相机标定:Cameras are not connected through mutual observations, please check the data,物理机标定直接找源代码改,docker的话在/kalibr-workspace里 - docker无法显示,所以生成不了 report-cam-awsome.pdf,这个文件就是 results-cam-awsome.txt 的pdf版,然后多了些图片,我没有搞明白图片作用
- docker标定如果报错,请关注下错误,因为docker没有显示环境,标定最后会提示类似
NO $DISPLAY的提示,指的应该是docker没有DISPLAY这个环境变量,不影响标定结果。如果没有针对该问题做配置,则忽略。 - 标定极吃内存。如果是物理机,建议32G内存起步,图片数量不要超过2300张。如果是docker,则不要超过1400张。物理机内存吃满会死机,只能强制关机(Ubuntu20.04),docker会直接报错,类似于多线程通信被关闭的异常。
- docker 进入容器的bash命令
docker attach [容器id] - 根据机器性能和图片数量不同,打 awsome.bag 包的时间约为10分钟,计算相机参数的时间为30分钟或更长,慢慢等着报错或者成功
kalibr标定单相机,自用指南,防忘记的更多相关文章
- 相机标定:kalibr标定工具箱使用总结
1 多相机标定 1.1采集图像和IMU 1.2制作Bag包 1)组织文件结构 ~/kalibr_workspace/test/stereo_calib bagsrc cam0 (1+time(0))* ...
- 手眼标定之相机随动eye-in-hand 示例:handeye_movingcam_calibration
* * This example explains how to use the hand eye calibration for the case where* the camera is atta ...
- ROS标定IDS相机
参考 ROS 相机标定http://blog.csdn.net/ArtistA/article/details/51125560 ROS里的标定程序只要使用了OPNCV的标定程序: opencv 相机 ...
- 恒天云单节点部署指南--OpenStack H版本虚拟机单节点部署解决方案
本帖是openstack单节点在虚拟机上部署的实践.想要玩玩和学习openstack的小伙伴都看过来,尤其是那些部署openstack失败的小伙伴.本帖可以让你先领略一下openstack的魅力.本I ...
- PHP表单安全过滤和防注入 htmlspecialchars() 和test_input()
什么是 htmlspecialchars() 函数? htmlspecialchars() 函数把特殊字符转换为 HTML 实体.这意味着 < 和 > 之类的 HTML 字符会被替换为 & ...
- react 引用 layer (防忘记)
1.先到 百度静态资源公共库 (http://cdn.code.baidu.com/)找到jquery和layer地址 2.找到./public/index.html 引入jquery和layer 3 ...
- 记录几个字符串转html的帮助类,已防忘记
html的帮助类 /// <summary> /// Represents a HTML helper /// </summary> public partial class ...
- JavaScript面向对象--记录防忘记(一)
1.理解对象: 创建自定义对象最简单的方式就是创建一个object实例,再给他添加属性和方法. let person = new Object(); person.name = 'zhangsan'; ...
- URLSearchParams和axios的post请求(防忘记)
import axios from 'axios' Vue.prototype.axios = axios mounted () { let params = new URLSearchParams( ...
- 相机标定:PNP基于单应面解决多点透视问题
利用二维视野内的图像,求出三维图像在场景中的位姿,这是一个三维透视投影的反向求解问题.常用方法是PNP方法,需要已知三维点集的原始模型. 本文做了大量修改,如有不适,请移步原文: ...
随机推荐
- WxPython跨平台开发框架之参数配置管理界面的设计和实现
我曾经在2014年在随笔<Winform开发框架之参数配置管理功能实现-基于SettingsProvider.net的构建>介绍过基于.NET开发的参数配置管理界面,本篇随笔基于类似的效果 ...
- Java基础 —— 集合(一)
集合(一) 数组和集合的区别 数组是固定长度的数据结构,而集合是动态的数据结构 数组可以包含基本数据类型和对象,集合只能包含对象 数组只能存放同一类型的数据,而集合可以蹲房不同类型的 数组可以直接访问 ...
- ecognition server注意事项
1.4002端口是节点管理界面,默认密码admin. 2.8184端口是任务管理界面. 3.节点在线状态下,查看提交的影像矢量路径是否正确. 4.看服务器读取各个文件是否有误. 5.用develope ...
- Prometheus 3.0.0 升级中遇到的 `--storage.tsdb.retention` 错误的修复方法
在将 Prometheus 升级到 3.0.0 后,许多用户会遇到以下错误: Error parsing command line arguments: unknown long flag '--st ...
- flutter安装过程中 flutter doctor 出现错误 cmdline-tools component is missing
进入Android studio的settings添加tool工具
- 埃尼阿克ENIAC与计算机发展,及信息技术发展史
一.埃尼阿克ENIAC 第二次世界大战期间,国军方为了研发新型的大炮和导弹,设立了"弹道研究实验室".实验室为了计算炮弹弹道,用了200多人加班加点进行计算,速度依感无法达到军方要 ...
- ng-alain 创建页面
https://ng-alain.com/cli/generate/zh https://ng-alain.com/docs/new-page/zh 默认情况下,创建模块 trade,创建在目录 sr ...
- 绞尽脑汁终于搞定/天地图标注点marker旋转/任意角度旋转/无需引入其他框架
一.前言说明 在其他地图组件中,标注点marker都是可以设置旋转角度的,这个功能其实非常实用,比如飞机移动轨迹,就是需要旋转飞机头飞行,轮船轨迹移动也是,百度地图和腾讯地图是通过调用setRotat ...
- Qt音视频开发38-USB摄像头解码linux方案
一.前言 做嵌入式linux上的开发很多年了,扳手指头算算,也起码9年了,陆陆续续做过很过诸如需要读取外接的USB摄像头或者CMOS摄像机的程序,实时采集视频,将图像传到前端,或者对图像进行人脸分析处 ...
- Qt音视频开发21-通用硬解码
一.前言 硬件解码是图形芯片厂家提出的用GPU资源解码视频流的方案,与之相对的是软解,也就是传统的用CPU承担解码工作的方案:优点是效率高,功耗低.热功耗低,缺点是缺乏有力的支持(包括滤镜.字幕等), ...