当前位置: 首页 > news >正文

opencv 双目立体视觉

单目标定

1.先单目标定每个相机,获得单个相机内参,外参,畸变参数。

双目标定

2.然后双面标定

2.1 stereoCalibrate (标定函数):

double stereoCalibrate(InputArrayOfArrays objectPoints, //世界坐标系
InputArrayOfArrays imagePoints1, //左图像点
InputArrayOfArrays imagePoints2, //右图像点
InputOutputArray cameraMatrix1,
InputOutputArray distCoeffs1,
InputOutputArray cameraMatrix2,
InputOutputArray distCoeffs2,
Size imageSize,
OutputArray R, //旋转
OutputArray T, //平移
OutputArray E, //本征矩阵
OutputArray F, //基础矩阵
TermCriteria criteria =TermCriteria(TermCriteria::COUNT+
TermCriteria::EPS, 30, 1e-6), int flags=CALIB_FIX_INTRINSIC )

 输入参数: 标定板上标定点的世界坐标数组,左相机对应的相应的像素点坐标数组,右相机对应的像素点坐标数组,左相机内参,畸变参数,右相机内参,右相机畸变参数

输出:
OutputArray R, //输出第一和第二相机坐标系之间的旋转矩阵
OutputArray T, // 输出第一和第二相机坐标系之间的旋转矩阵平移向量
OutputArray E, //本征矩阵
OutputArray F, //基础矩阵

2.2 stereoRectify (双目矫正函数):对标定过的摄像机进行校正

    void stereoRectify(InputArray cameraMatrix1, InputArray distCoeffs1, InputArray cameraMatrix2, InputArray distCoeffs2, Size imageSize, InputArray R, InputArray T, OutputArray R1, OutputArray R2, OutputArray P1, OutputArray P2, OutputArray Q, int flags=CALIB_ZERO_DISPARITY, double alpha=-1, Size newImageSize=Size(), Rect* validPixROI1=0, Rect* validPixROI2=0 )

输入:
cameraMatrix1– 第一个相机矩阵.
distCoeffs1– 第一个相机畸变参数.
cameraMatrix2– 第二个相机矩阵.
distCoeffs2– 第二个相机畸变参数.
imageSize– 用于校正的图像大小.
R– 第一和第二相机坐标系之间的旋转矩阵。
T– 第一和第二相机坐标系之间的平移矩阵.
输出:
R1– 输出第一个相机的3x3矫正变换(旋转矩阵) .
R2– 输出第二个相机的3x3矫正变换(旋转矩阵) .
P1–在第一台相机的新的坐标系统(矫正过的)输出 3x4 的投影矩阵
P2–在第二台相机的新的坐标系统(矫正过的)输出 3x4 的投影矩阵
Q–输出深度视差映射矩阵,
flags– 操作的 flag可以是零或者是CV_CALIB_ZERO_DISPARITY . 如果设置了CV_CALIB_ZERO_DISPARITY,函数的作用是使每个相机的主点在校正后的图像上有相同的像素坐标。如果未设置标志,功能还可以改变图像在水平或垂直方向(取决于极线的方向)来最大化有用的图像区域。
alpha– 自由缩放参数。如果是-1或没有,该函数执行默认缩放。否则,该参数应在0和1之间。alpha=0,校正后的图像进行缩放和偏移,只有有效像素是可见的(校正后没有黑色区域)。alpha= 1意味着校正图像的抽取和转移,所有相机原始图像素像保留在校正后的图像(源图像像素没有丢失)。显然,任何中间值产生这两种极端情况之间的中间结果。
newImageSize– 校正后新的图像分辨率。相同的尺寸应传递给initUndistortRectifyMap()(见OpenCV样品目录stereo_calib.cpp样品)。当(0,0)传递(默认),它设置为原始图像大小。设置为较大的值能帮助你保存原始图像的细节,特别是当有一个大的径向畸变时。
validPixROI1– 校正后的图像可选的输出矩形,里面所有像素都是有效的。如果alpha= 0,ROIs覆盖整个图像。否则,他们可能会比较小。
validPixROI2– 校正后的图像可选的输出矩形,里面所有像素都是有效的。如果alpha= 0,ROIs覆盖整个图像。否则,他们可能会比较小

2.3 initUndistortRectifyMap:计算摄像机校正映射

    void initUndistortRectifyMap( InputArray cameraMatrix, InputArray distCoeffs,InputArray R, InputArray newCameraMatrix,Size size, int m1type, OutputArray map1, OutputArray map2 );

函数功能:计算无畸变和修正转换映射。
参数说明:
cameraMatrix:输入相机矩阵
distCoeffs:输入参数,相机的畸变系数:,有4,5,8,12或14个元素。如果这个向量是空的,就认为是零畸变系数。
R:可选的修正变换矩阵,是个3*3的矩阵。通过stereoRectify计算得来的R1或R2可以放在这里。如果这个矩阵是空的,就假设为单位矩阵。在cvInitUndistortMap中,R被认为是单位矩阵。
newCameraMatrix:新的相机矩阵,通过stereoRectify计算得来的P1或P2可以放在这里
size:未畸变的图像尺寸。
m1type:第一个输出的映射的类型,可以为 CV_32FC1, CV_32FC2或CV_16SC2,参见cv::convertMaps。
map1:第一个输出映射。
map2:第二个输出映射。

2.4 remap:把一幅图像中某位置的像素放置到另一幅图像指定位置的过程

void remap( InputArray src, //输入图像
OutputArray dst, //输出图像
InputArray map1,//第一个映射
InputArray map2, //第二个映射
int interpolation, //插值
intborderMode=BORDER_CONSTANT,
const Scalar& borderValue=Scalar()
)

双目标定例子

std::ofstream fout(cal_dir + "calibration_result.txt");
std::vector<cv::Point3f> worldpoint;
std::vector<std::vector<cv::Point3f>> worldpoints;
for(int i = 0;i < Boardsize.height;i++)
{for(int j 

相关文章:

opencv 双目立体视觉

单目标定 1.先单目标定每个相机,获得单个相机内参,外参,畸变参数。 双目标定 2.然后双面标定 2.1 stereoCalibrate (标定函数): double stereoCalibrate(InputArrayOfArrays objectPoints, //世界坐标系 InputArrayOfArrays imagePoints1, //左图像点 InputArrayOfA…...

如何将jpg转化为png?

如何将jpg转化为png&#xff1f;可能有的小伙伴就会疑惑了&#xff0c;jpg和png都是图片常用的一种格式&#xff0c;为什么要进行格式的更改呢&#xff1f;那是因为PNG格式具有更好的图片质量和更少的失真。JPG&#xff08;或JPEG&#xff09;格式的图片通常是压缩过的&#xf…...

查看 SSH 登录失败日志

查看日志文件 cat /var/log/auth.log查看 SSH 登录失败的记录 grep "Failed password\|authentication failure" /var/log/auth.log...

竞赛选题 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…...

MR混合现实模拟消防安全演练场景实训

混合现实&#xff08;MR&#xff09;是一种将虚拟世界与真实世界相结合的技术。它允许教师将数字元素融入实际场景&#xff0c;使学生在亲身体验中学习消防安全知识。这种方式不仅可以激发学生的学习兴趣&#xff0c;还能增强学生的记忆效果。 在MR的助力下&#xff0c;消防安全…...

geecg-uniapp 同源策略 数据请求 获取后台数据 进行页面渲染 ui库安装 冲突解决(3)

一&#xff0c;同源策略 &#xff08;1&#xff09;首先找到env 要是没有env 需要创建一个替换成后端接口 &#xff08;2&#xff09;因为他封装了 先找到 http 请求位置一级一级找 然后进行接口修改 &#xff08;3&#xff09;appUpdata 修改接口 运行即可 &#x…...

Krypton控件组使用之KryptonRibbon

1.去掉File按钮 2.去掉 Cutomize 菜单...

低压配电系统中浪涌保护器的作用,安装位置和接线方法

低压配电系统是指在变压器低压侧或用户侧的电气装置&#xff0c;主要用于向用户提供安全、可靠和经济的电能。低压配电系统中常见的电气设备有低压配电柜、分支箱、开关箱、插座、照明等。这些设备都需要防止因外部或内部原因产生的过电压对其造成损坏或影响其正常工作。过电压…...

OpenCV实现答题卡自动打分!

目录 1&#xff0c;主要原理以及函数介绍 全部代码&#xff0c;以 2 &#xff0c; 实现过程 3&#xff0c;结果展示 1&#xff0c;主要原理以及函数介绍 ap argparse.ArgumentParser() 创建一个ArgumentParser对象&#xff0c;并将其赋值给变量ap。这个对象可以接受我们的脚…...

Python编程必备:掌握列表遍历的6种神级技巧!

更多资料获取 &#x1f4da; 个人网站&#xff1a;涛哥聊Python 遍历列表是Python中最常见的任务之一&#xff0c;因为列表是一种非常常用的数据结构&#xff0c;它用于存储一组项目。 在编程中&#xff0c;经常需要对这些项目进行操作&#xff0c;例如查找特定元素&#xff…...

nodejs+vue校园失物招领平台

失物人可以在该平台中发布自己的拾物信息&#xff0c;本毕业设计题目将设计与实现一个基于校园的非商业行为的网上校园失物招领平台。并给出自己附加的各项条件&#xff0c; 失物招领管理系统主要分为两个部分&#xff0c;涉及前台和后台&#xff0c;然后由失主通过校园失物招…...

leetcode做题笔记171. Excel 表列序号

给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 示例 1: 输入: columnTitle "A" 输出: 1示例 2: 输入: colu…...

SW曲面实体导出工程图

...

Docker的私有仓库部署——Harbor

Harbor 简介 一、什么是Harbor Harbor 是 VMware 公司开源的企业级 Docker Registry 项目&#xff0c; 其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。 Harbor以 Docker 公司开源的 Registry 为基础&#xff0c; 提供了图形管理 UI 、基于角色的访问控制(Role…...

JavaScript反爬虫技巧详细攻略

在互联网时代&#xff0c;网站采取了各种手段来防止被爬虫抓取数据&#xff0c;其中最常见的就是JavaScript反爬虫技巧。本文将揭示一些常用的JavaScript反爬虫技巧&#xff0c;并提供一些实际操作建议&#xff0c;帮助您保护自己的爬虫免受检测和封禁。 1、为什么网站使用Java…...

C++基础入门学习笔记

问题1&#xff1a;什么是 C 中的多态&#xff1f;如何实现多态&#xff1f; 回答1&#xff1a;C 中的多态是指同一种类型的实体&#xff0c;可以在不同的情况下表现出不同的行为。实现多态的方式有两种&#xff1a;虚函数和模板函数。虚函数是在基类中声明为虚函数的函数&…...

手机cpu架构查看及armeabi、armeabi-v7a、arm64-v8a及x86等说明

一、如何查看cpu加购 winR&#xff0c;输入cmd 填下指令如下 adb shell getprop ro.product.cpu.abi 二、架构描述 1.armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它. 2.arm64-v8a: 第8代、64位ARM处理器&#xff0c;很少设备&a…...

node-sass报错,node16运行node14的项目

原来项目是node14的版本&#xff0c;现在用node16运行npm i 会报以下错误 node-sass4.14.1 postinstall: node scripts/build.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the node-sass4.14.1 postinstall script. npm ERR! This is probably not a problem with …...

在Linux中掌握不同的命令,让创建文件变得易如反掌

在Linux中创建一个新文件很简单,但也有一些令人惊讶和灵巧的技术。​在本教程中,学习如何从Linux终端创建文件。​ 先决条件 访问命令行/终端窗口(Ctrl-Alt-F2或Ctrl-Alt-T) 具有sudo权限的用户帐户(对于某些文件/目录是可选的) 从命令行创建新的Linux文件 Linux的设计…...

iOS 14 YYAnimatedImageView加载图片失败处理

升级到iOS14&#xff0c;之前使用的YYimage框架全部不能正常显示图片,当然动态图正常显示&#xff0c;静态图无法显示&#xff1b; 原因是&#xff1a;14.0 系统调用了下面方法&#xff0c;YYAnimatedImageView没有正确处理 -(void)displayLayer:(CALayer )layer; 1 可以用以下…...

mitmproxy实战:从环境搭建到HTTPS抓包全攻略

1. 认识mitmproxy&#xff1a;你的网络调试瑞士军刀 第一次听说mitmproxy时&#xff0c;你可能觉得这是个复杂的安全工具。但实际用过后就会发现&#xff0c;它就像网络调试领域的瑞士军刀&#xff0c;能解决各种数据抓包难题。简单来说&#xff0c;mitmproxy是个开源的交互式中…...

ComfyUI-FramePackWrapper终极指南:3种AI视频生成模型加载方案深度对比

ComfyUI-FramePackWrapper终极指南&#xff1a;3种AI视频生成模型加载方案深度对比 【免费下载链接】ComfyUI-FramePackWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-FramePackWrapper 在AI视频生成领域&#xff0c;ComfyUI-FramePackWrapper是一款革…...

零基础友好:快马AI为你定制专属visual studio code图文安装与上手教程

作为一名从零开始学习编程的新手&#xff0c;我深刻体会到安装开发环境是很多人遇到的第一个"拦路虎"。最近在InsCode(快马)平台上发现了一个特别适合新手的Visual Studio Code安装教程项目&#xff0c;它完全解决了我的困惑。下面分享我的学习笔记&#xff0c;希望能…...

AutoDL部署大模型后,除了Chat:手把手教你用本地API接口玩转文档总结、代码生成和智能客服

AutoDL部署大模型后&#xff0c;除了Chat&#xff1a;手把手教你用本地API接口玩转文档总结、代码生成和智能客服 当你已经在AutoDL上成功部署了大语言模型&#xff0c;并验证了基础的聊天功能后&#xff0c;是否思考过如何将这些能力真正融入日常工作流&#xff1f;本文将带你…...

ECharts 5.4.3实战:3步打造科技感爆棚的流光折线图(附完整代码)

ECharts 5.4.3实战&#xff1a;3步打造科技感爆棚的流光折线图&#xff08;附完整代码&#xff09; 在数据可视化领域&#xff0c;ECharts凭借其强大的功能和灵活的配置选项&#xff0c;已经成为前端开发者的首选工具之一。特别是其丰富的动画效果&#xff0c;能够为静态数据注…...

Whisper语音识别镜像快速部署:5分钟搭建多语言客服转写服务

Whisper语音识别镜像快速部署&#xff1a;5分钟搭建多语言客服转写服务 1. 引言&#xff1a;语音识别在客服场景的挑战 在全球化的商业环境中&#xff0c;客服中心面临着多语言支持的巨大挑战。传统语音识别系统往往需要为每种语言单独部署模型&#xff0c;不仅成本高昂&…...

别再手动算脉冲了!用STM32的编码器接口模式(TIM_EncoderInterfaceConfig)实现电机测速,附完整代码

STM32硬件编码器接口实战&#xff1a;精准电机测速的工程化实现 在电机控制系统中&#xff0c;转速测量是闭环控制的基础环节。传统基于外部中断的软件计数方案不仅占用CPU资源&#xff0c;还面临脉冲丢失和方向误判的风险。STM32系列微控制器内置的硬件编码器接口&#xff08;…...

OpenRGB:开源跨平台RGB灯光控制方案,告别多软件困扰实现设备统一管理

OpenRGB&#xff1a;开源跨平台RGB灯光控制方案&#xff0c;告别多软件困扰实现设备统一管理 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcPr…...

小米智能家居与Home Assistant深度整合方案

小米智能家居与Home Assistant深度整合方案 【免费下载链接】ha_xiaomi_home Xiaomi Home Integration for Home Assistant 项目地址: https://gitcode.com/GitHub_Trending/ha/ha_xiaomi_home 小米智能家居与Home Assistant的深度整合为用户提供了全面的智能设备控制解…...

从“雾里看花”到清晰可见:手把手教你用Matlab复现水下图像去雾经典论文

从“雾里看花”到清晰可见&#xff1a;手把手教你用Matlab复现水下图像去雾经典论文 水下摄影常常面临光线衰减和悬浮颗粒散射的困扰&#xff0c;导致拍摄的画面如同蒙上一层薄雾。这种现象不仅影响视觉效果&#xff0c;更给海洋科研、水下工程带来诸多不便。2009年&#xff0c…...