SLAM十四讲——第五讲相机与图像实践部分
目录
方法一:安装完ROS之后就自动地将opencv安装了,以下命令是安装ROS的方法
方法二:ubuntu software——没见过哪个程序员会打开
opencv
简明介绍
对图像进行一些处理,如对图像进行裁剪、旋转、像素值的归一化,去噪,加噪声、像素统计学、读取视频。
官方手册
软件的安装方式(重点)
方法一:安装完ROS之后就自动地将opencv安装了,以下命令是安装ROS的方法
wget http://fishros.com/install -O fishros && . fishros
方法二:ubuntu software——没见过哪个程序员会打开
方法三:apt install
特点:1、安全性、依赖性、库版本老旧、依赖冲突
2、常会遇到冲突问题:换源、update、upgrade、手动卸载一些库、安装 一些依赖。。。无法一概而论,具体情况具体分析。
方法四:snap install
特点:1、容器化、安全、独立、自动更新——很像docker
2、比较时髦的方法,目前身边没人用(其实Ubuntu16已存在)
方法五:dpkg -i xxx.deb
特点:安装一些外部工具(源中没有收录的)由软件官网提供如:浏览器、IDE、 网盘、音乐、视频、录屏、文本编辑等
方法六:source源码编译安装
cmake
make
make install
特点:安装细则会在cmakelists中,很清楚,很明了,source的版本也可以选择
snap的基本用法 与apt的区别:snap vs apt_snap apt_devilyouwei的博客-CSDN博客
Docker 学习视频推荐:
https://www.bilibili.com/video/BV11L411g7U1/?spm_id_from=333.337.search-card.all.click
库的安装
方法一:apt install
方法二:source 源码安装
库的调用
1、find_package(OpenCV)
2、cmake-tools自动生成?

查看OpenCV的cmake配置文档OpenCVConfig.cmake

将文档中的三行加入到编译大型工程项目的CMakelists!
示例程序分析
图像去畸
双目模型
void showPointCloud(
const vector<Vector4d, Eigen::aligned_allocator<Vector4d>> &pointcloud);
vector容器中存放的是3D点云数据,Vector4d中存放的是(x,y,z,灰度值), Eigen::aligned_allocator<Vector4d>是为了利用Eigen库的加速计算,是一种数据对齐的方式!

cv::Ptr<cv::StereoSGBM> sgbm = cv::StereoSGBM::create(
0, 96, 9, 8 * 9 * 9, 32 * 9 * 9, 1, 63, 10, 100, 32);
匹配算法的求解器!
cv::Mat disparity_sgbm, disparity;
定义两个空图像!
sgbm->compute(left, right, disparity_sgbm);
由左右图像计算视差disparity_sgbm!
disparity_sgbm.convertTo(disparity, CV_32F, 1.0 / 16.0f);
计算偏执后的视差disparity!
vector<Vector4d, Eigen::aligned_allocator<Vector4d>> pointcloud;
生成点云!
// 根据双目模型计算 point 的位置
double x = (u - cx) / fx;
double y = (v - cy) / fy;//计算像平面的坐标
double depth = fx * b / (disparity.at<float>(v, u));//由左右图像计算深度z
point[0] = x * depth;//归一化平面深度信息还原
point[1] = y * depth;
point[2] = depth;
看注释即可!
RGB-D

要在rgb-d相机的CMakelists.txt文件中,加入fmt的引用,否则在make时会报错!

相机标定
- Kalibr 开源ROS标定工具: https://github.com/ethz-asl/kalibr
- Kalibr 标定流程:https://www.bilibili.com/video/BV1gA411w7EM/?spm_id_from=333.337.search-card.all.click&vd_source=0da0b7e545e1a65e82836ac4eff73077
- 张正友标定法介绍:https://www.bilibili.com/video/BV1k3411T73d/?spm_id_from=333.337.search-card.all.click&vd_source=0da0b7e545e1a65e82836ac4eff73077
- matlab 工具标定相机流程:https://blog.csdn.net/weixin_44709392/article/details/124486048
- Opencv 标定流程:https://blog.csdn.net/weixin_51229250/article/details/119976417
-
OpenCV的简单使用教程与基本函数(62条消息) OpenCV的简单使用教程与基本函数(C++版本)_c++ opencv教程_Great Bruce Young的博客-CSDN博客
了解如何使用matlab、opencv标定相机,弄清楚各种标定方法的精度和流程区别!
Docker
https://www.bilibili.com/video/BV11L411g7U1/?spm_id_from=333.337.search-card.all.click
更多推荐
所有评论(0)