基于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_contrib(用在WLS滤波)
2.1 C++平台
opencv和opencv_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. 深度图
相关文章:
基于opencv实现双目立体匹配点云距离
双目相机或两个单目相机。 一、相机标定 MATLAB软件,打开双目标定app。 点击add images,弹出加载图像的窗口,分别导入左图和右图,设置黑白格长度(标定板的长度一般为20)。 点击确定,弹出加载…...
RabbitMQ高级篇,进阶内容
强烈建议在看本篇博客之前快速浏览文章:RabbitMQ基础有这一篇就够了 RabbitMQ高级篇 0. 前言1. 发送者的可靠性1.1 生产者重试机制1.2 生产者确认机制1.3 实现生产者确认 2. MQ的可靠性2.1 MQ持久化2.2 LazyQueue 3. 消费者的可靠性3.1 消费者确认机制3.2 失败重试策…...
STM32重定义printf,实现串口打印
在“usart.c”文件中加入以下代码 #ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endifPUTCHAR_PROTOTYPE{HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);return ch; }…...
项目进度
变为负进度了,还是要用baseservlet,我就又重新写了一部分,看了好几遍视频,突然就想明白了,感觉每次要上课,就时间不连续思路总是断,今天晚自习算是搞懂了怎么写了,就是代码有点多&am…...
Android的内核
Android的内核是基于Linux的长期支持版本的“Android通用内核(ACK)”。 Android作为一个广泛使用的操作系统,其根基在于内核的设计和功能。下面将深入探讨Android内核的各个方面,从其基本结构到与Linux内核的关系,再到内核的版本管理及在设备…...
Github Wiki 超链接 转 码云Gitee Wiki 超链接
Github Wiki 超链接 转 码云Gitee Wiki 超链接 Github 是 :[[相对路径]] Gitee 是 :[链接文字](./相对路径) 查找:\[\[(.*?)\]\] 替换:[$1]\(./$1\) 或替换:**[$1]\(./$1\)** (码云的超链接,很…...
Android10源码刷入Pixel2以及整合GMS
一、ASOP源码下载 具体可以参考我之前发布的文章 二、下载相关驱动包 这一步很关键,关系到编译后的镜像能否刷入后运行 下载链接:Nexus 和 Pixel 设备的驱动程序二进制文件 如下图所示,将两个驱动程序上传到Ubuntu服务器,并进行解压,得到两个脚本: 下载解压后会有两…...
wpf触发与模板的使用示例:批量生产工具
批量生产工具 <Window x:Class"WpfM20UpdateFW.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressio…...
brew install node提示:Error: No such keg: /usr/local/Cellar/node
打开本地文件发现Cellar目录下无法生成 node文件,应该是下载时出现问题,重复下载无法解决问题,只能重新安装brew。 步骤1(安装 brew): /bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/ra…...
记录一下gitlab社区版的安装教程
目录 1.更新系统软件包 2.安装必要的依赖 3.添加GitLab源 3.1对于GitLab Enterprise Edition(EE): 3.2对于GitLab Community Edition(CE): 4.安装GitLab 4.1安装GitLab Enterprise Edition(E…...
20. 如何在MyBatis中处理多表关联查询?常见的实现方式有哪些?
在MyBatis中处理多表关联查询是一项常见的需求,特别是在关系型数据库中存储复杂的实体关系时。MyBatis提供了多种方式来实现多表关联查询,常见的实现方式包括使用<association>和<collection>标签在<resultMap>中进行对象关系映射&…...
【百日算法计划】:每日一题,见证成长(013)
题目 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 输入:head [1,2,2,1] 输出:true 思路 找到中间节点反转后半部分链表前后链表顺序比…...
PCL 读取和保存点云
目录 一、概述 1.1原理 1.2实现步骤 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 1.1原理 PCL (Point Cloud Library) 是…...
js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】
js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】 描述 概述 在前端开发中,遇到TypeError: Cannot read properties of null (reading indexOf)这类错误并不罕见。这个错误通常表明你试图在一个null值上调用indexOf方法,…...
微信小程序-formData使用
作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 一、介绍 在小程序中使用formdata上传数据,可实现多文件上传 跟浏览器中的FormData对象类…...
潜在语义分析(Latent Semantic Analysis,LSA)—无监督学习方法、非概率模型、判别模型、线性模型、非参数化模型、批量学习
定义 输入: X [ x 11 x 12 ⋯ x 1 n x 21 x 22 ⋯ x 2 n ⋮ ⋮ ⋮ ⋮ x m 1 x m 2 ⋯ x m n ] , 文本集合 D { d 1 , d 2 , ⋯ , d n } , 单词集合 W { ω 1 , ω 2 , ⋯ , ω m } , x i j : 单词 ω i 在文本 d j 中出现的频数或权值 X\left[ \begin{array}{cccc} x_{11} …...
【安全漏洞】MySQL 8.0.33 、CVE-2023-22102
mysql-connector-java:jar:8.0.33已经重新定位到mysql-connector-j:jar:8.0.33 安全漏洞描述 在SBOM扫描过程中,检测到mysql-connector-j:8.0.33存在如下高危安全漏洞: CVE-2023-22102:Oracle MySQL Connectors 8.1.0 版本之前存在安全漏洞&…...
Flutter 响应式框架
一、简介 响应式框架会自动使用户界面适应不同的屏幕大小。创建你的用户界面一次,让它显示完美的像素在移动,平板电脑和桌面! 1.1 问题 支持多种显示尺寸通常意味着要多次重新创建同一布局。在传统的Bootstrap方法下,构建响应式…...
电脑AE特效软件 After Effects软件2017中文版下载安装指南 (Win/Mac)
电脑ae特效软件 After Effects软件2017中文版下载安装win/... 电脑AE特效软件 After Effects软件2017中文版下载安装指南 (Win/Mac) Adobe After Effects 2017 是一款功能强大的视频后期处理软件,广泛应用于影视特效制作、动态图形设计、视觉效果合成等领域。其丰…...
C#中的装箱和拆箱是什么
在 C# 中,装箱(Boxing)和拆箱(Unboxing)是与值类型和引用类型相关的概念,涉及到值类型的数据在托管堆(Heap)上的存储方式。 装箱(Boxing) 装箱是指将值类型…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
