基于opencv实现双目立体匹配点云距离

news/2024/9/17 8:02:11/ 标签: opencv, 人工智能, 计算机视觉

双目相机或两个单目相机。

一、相机标定

MATLAB软件,打开双目标定app。
请添加图片描述

点击add images,弹出加载图像的窗口,分别导入左图和右图,设置黑白格长度(标定板的长度一般为20)。

请添加图片描述

点击确定,弹出加载好的图像。

请添加图片描述

在菜单栏勾选2 Coefficients(鱼眼相机勾选3 Coefficients)、Tangential Distinction,点击Calibrate,显示误差。需要标定误差小于0.1,这样距离才能更准。若误差较大,删除导致误差较大的图片,重新计算,保证图片数量在30张左右。

请添加图片描述

最后导出标定数据。

请添加图片描述
左相机内参矩阵:
stereoParams.CameraParameters1.IntrinsicMatrix的转置
左相机畸变矩阵:
[stereoParams.CameraParameters1.RadialDistortion, stereoParams.CameraParameters1.TangentialDistortion, 0]
右相机内参矩阵:
stereoParams.CameraParameters2.IntrinsicMatrix的转置
右相机畸变矩阵:
[stereoParams.CameraParameters2.RadialDistortion, stereoParams.CameraParameters2.TangentialDistortion, 0]
两个相机间的旋转矩阵:
RotationOfCamera的转置
两个相机间的平移矩阵:
TranslationOfCamera

opencv_contribWLS_35">二、安装opencv_contrib(用在WLS滤波)

2.1 C++平台

opencvopencv_contrib版本需一致!

opencv下载地址:https://opencv.org/releases/
opencv_contrib下载地址:https://github.com/opencv/opencv_contrib/releases
cmake下载地址:https://cmake.org/download/

打开cmake,添加文件路径。
请添加图片描述
点击Configure。配置编译器,选择对应其的编译器版本和编译平台版本,再点击finish,cmake将会自动编译文件。

找到“BUILD_opencv_world”和“OPENCV_ENABLE_NONFREE”这两个变量,在变量后面的方框内打上“√”。找到“OPENCV_EXTRA_MODULES_PATH”变量,选择opencv_contrib安装包里的modules文件夹。

打开C:\Windows\System32\drivers\etc\hosts (需要使用管理员权限打开),
追加199.232.68.133 raw.githubusercontent.com如下:
请添加图片描述
重新Configure、Generate,一路白色!

2.2 python平台

pip install opencv-contrib-python

三、效果

请添加图片描述

Fig1. 左图
请添加图片描述

Fig2. 右图
请添加图片描述

Fig3. 视差图
请添加图片描述

Fig4. 深度图


http://www.ppmy.cn/news/1521893.html

相关文章

pdf转word怎么转换?2024快速进行文件格式转换的几款软件

pdf转word怎么转换?2024快速进行文件格式转换的几款软件 将PDF文件转换为Word文档是日常工作中常见的需求,尤其是当你需要编辑或重新利用PDF中的内容时。市面上有许多软件可以帮助你轻松完成PDF转Word的任务,以下是五款值得推荐的软件&#…

ArcGIS Pro SDK (十二)布局 11 报告

ArcGIS Pro SDK (十二)布局 11 报告 文章目录 ArcGIS Pro SDK (十二)布局 11 报告1 报告项目项1.1 获取当前项目中的所有报告1.2 获取特定报告1.3 在新视图中打开报告项目项1.4 激活已打开的报告视图1.5 引用活动报告视图1.5 刷新报告视图1.7 缩放到整个页面1.8 缩放到报告…

计算机网络10——数据库语法1

目录 1、sql语句执行顺序 2、多表查询 3、写sql的步骤 4、去重 5、视图 6、自定义函数:function 7、调用函数 1、sql语句执行顺序 一般情况下:1、from 2、where 3、select 如果有分组和having:from 分组 having最后执行 2、多表查询 内联:select * from 表1 inne…

EI会议推荐-第二届大数据与数据挖掘国际会议(BDDM 2024)

第二届大数据与数据挖掘国际会议(BDDM 2024) 1、基本信息 大会官网:http://www.icbddm.org/ 官方邮箱:icbddm163.com 主办方:武汉纺织大学 会议时间:2024年12月13日-12月15日 会议地点:湖…

全面掌握PythonJava分层自动化测试:从单元测试到安全检测的完整指南

分层自动化(Layered Automation)是一种软件测试策略,通过将自动化测试分为不同层次或阶段,针对不同类型的测试需求,确保测试覆盖的全面性以及提高测试效率。这种方法通过分解复杂的测试任务,将其分配到适当的层级,从而降低测试的维护成本并提高自动化测试的稳定性和复用…

装饰器模式decorator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/decorator 将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为 调用过程 当你调用 encoded.writeData(salaryRecords); 时,控制流首先进入 CompressionDecorator 的 writeData …

3、C++常用宏

这是C的一些常用宏,常用于调试和错误信息的输出。 __FILE__ // 当前源文件的文件名。 __LINE__ // 当前源文件中的行号 __DATE__ // 编译当前源文件的日期(格式:MMM DD YYYY) __TIME__ // 编译当前源文件的时…

JVM——Java虚拟机内存初识(面经篇之JVM内存)

网上说的太详细了,真不利于我的初识和记忆, 例如:堆区的young, old,讲了一大堆,结果,我连这些区域是干什么的都不知道,存储什么的都不知道, 害得是我自己总结: 堆&#x…

Facebook的AI进化:如何用智能技术提升内容推荐

在数字时代,社交媒体平台不仅是信息传播的重要渠道,也是个人和品牌互动的关键平台。Facebook作为全球领先的社交媒体网络,其内容推荐系统的优化在很大程度上提升了用户体验。本文将探讨Facebook如何通过人工智能(AI)技…

使用Fign进行客户端远程调用和SpringFormEncoder的使用

1、引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> 2、启动类加上注解 EnableFeignClients SpringBootApplication public class FeignTe…

Ansible 自动化运维项目

在现代 IT 运维中&#xff0c;自动化正在成为提升效率和可靠性的关键工具。Ansible 作为一种流行的自动化工具&#xff0c;因其简单易用和强大的功能&#xff0c;被广泛应用于配置管理、部署、持续集成等领域。本文将通过一个实际的 Ansible 项目案例&#xff0c;来介绍如何使用…

Flask中实现上下文管理

在Flask中&#xff0c;上下文管理是通过Flask框架内部机制自动管理的&#xff0c;但你也可以通过Flask提供的API来显式地操作上下文。Flask使用_request_ctx_stack和_app_ctx_stack这两个本地栈&#xff08;local stacks&#xff09;来分别管理请求上下文和应用上下文的入栈&am…

P1166 打保龄球

共可以投 1 局 一局10轮 在一局中&#xff0c;一共有十个柱&#xff0c;会出现很多种情况。 第1次把10个 打倒全部 >> 分数10后2次得分 --若是第10轮则还需另加两次滚球&#xff1b; 没全部打倒 >> 第2次把剩下的 打倒 >&g…

MFC生成dll的区别

主要分三种&#xff1a; A. 动态链接库(dll) B.具有导出项的(dll)动态链接库 C.MFC动态链接库 对比项目&#xff1a;可以根据需要选择哪种dll方便 添加自定义导出功能Demo 1. 添加导出实现接口&#xff1a; A. 导出需要具有&#xff1a;__declspec(dllexport) B. 按照C语言…

Unity6 + UE5.4 PSO缓存实践记录

题图&#xff08;取自COD冷战的着色器编译提示&#xff09; PSO&#xff08;管线状态对象 Pipeline State Object&#xff09;是伴随现代图形API&#xff08;DirectX12、Vulkan、Metal&#xff09;而出现的概念&#xff0c;它本质上是单次绘制时渲染管线所处的状态信息的集合&…

Java实用类——操作日期和时间

Date类&#xff1a; Date 位于java.util.Date类&#xff1a;表示日期和时间SimpleDateFormat 位于java.text.SimpleDateFormat类&#xff1a;格式化日期类parse方法&#xff1a;将字符串转为日期类型 public static void main(String[] args) throws ParseException {//获得当…

Unity Adressables 使用说明(五)在运行时使用 Addressables(Use Addressables at Runtime)

一旦你将 Addressable assets 组织到 groups 并构建到 AssetBundles 中&#xff0c;就需要在运行时加载、实例化和释放它们。 Addressables 使用引用计数系统来确保 assets 只在需要时保留在内存中。 Addressables 初始化 Addressables 系统在运行时第一次加载 Addressable …

oracle事务隔离级别

文章目录 数据库事务概况1.事务相关概念2.事务的四个特性ACID : oracle事务隔离级别1 .两个事务并发访问数据库数据时可能存在的问题 数据库事务概况 一组SQL,一个逻辑工作单位&#xff0c;执行时整体修改或者整体回退。 1.事务相关概念 1&#xff09;事务的提交和回滚&…

MongoDB-聚合查询操作介绍

目录 前言db.collection.aggregate()db.collection.aggregate()示例一db.collection.aggregate()示例二 复杂的聚合操作通过mongoimport导入测试数据复杂的聚合操作示例聚合操作的偏好设置-project函数聚合操作的偏好设置-unwind函数 前言 MongoDB聚合操作相当于关系型数据库S…

MATLAB基础应用精讲-【数模应用】Poisson检验(附MATLAB、python和R语言代码实现)

目录 几个高频面试题目 泊松分布的现实意义是什么,为什么现实生活多数服从于泊松分布? 算法原理 数学模型 参数估计与假设检验 (一) 参数估计 (二) 回归系数的假设检验 (三) 拟合优度检验 适用条件 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 …