Matlab R2022b使用Camera Calibrator工具箱张正友标定法进行相机标定附带标定前后对比代码

打开Camera Calibrator
在这里插入图片描述
在这添加你拍摄的图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据你每个方块的实际边长填写,我是15mm。
在这里插入图片描述
通俗一点,要k3就选3 Coefficients,否则为0;要p1、p2就选Tangential Distortion。然后进行计算。
在这里插入图片描述
可以点击右侧误差高的选中图像进行移除来提高精度。
在这里插入图片描述
在这里插入图片描述
移除后会自动重新计算,然后导出参数。
在这里插入图片描述
在这里插入图片描述
导出后在工作区查看变量
在这里插入图片描述
K就是IntrinsicMatrix
TangentialDistortion分别是p1,p2
RadialDistortion分别是k1,k2,k3(选用2 Coefficients为0不显示)

标定后效果如下:

在这里插入图片描述

标定前后对比代码:

import cv2  
import numpy as np  
#IntrinsicMatrix
fx,cx,fy,cy=326.398894622712,284.954173978833,328.070507959748,218.798886581291
#TangentialDistortion
p1,p2=-0.000517178855500132,-0.00236634006321519
#RadialDistortion
k1,k2,k3=0.229371939302846,-0.194046239909587,0def undistort_video(camera_matrix, dist_coeffs, video_source=0):  # 打开视频流  cap = cv2.VideoCapture(video_source)  # 读取第一帧以获取其尺寸  ret, frame = cap.read()  if not ret:  print("无法打开视频流或文件")  return  h, w = frame.shape[:2]  # 创建一个窗口用于显示校正前的视频  cv2.namedWindow('Original Video', cv2.WINDOW_AUTOSIZE)  # 创建一个窗口用于显示校正后的视频  cv2.namedWindow('Undistorted Video', cv2.WINDOW_AUTOSIZE)  while True:  # 读取视频帧  ret, frame = cap.read()  if not ret:  break  # 校正图像  undistorted_frame = cv2.undistort(frame, camera_matrix, dist_coeffs, None, camera_matrix)  # 显示校正前和校正后的视频  cv2.imshow('Original Video', frame)  cv2.imshow('Undistorted Video', undistorted_frame)  # 按'q'键退出  if cv2.waitKey(1) & 0xFF == ord('q'):  break  # 释放资源和关闭窗口  cap.release()  cv2.destroyAllWindows()  # 假设你已经有了这些参数,这里只是示例值  
camera_matrix = np.array([[fx, 0, cx],  [0, fy, cy],  [0, 0,  1]], dtype=np.float32)  
dist_coeffs = np.array([k1, k2, p1, p2, k3], dtype=np.float32)  # 注意:将 fx, fy, cx, cy, k1, k2, p1, p2, k3 替换为你的实际标定值  # 调用函数  
undistort_video(camera_matrix, dist_coeffs)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416298.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C/C++】C语言实现蛇形矩阵

目录 题目描述输入描述:输出描述:示例思路代码 题目描述 给你一个整数n&#xff0c;输出n∗n的蛇形矩阵。 输入描述: 输入一行&#xff0c;包含一个整数n 输出描述: 输出n行&#xff0c;每行包含n个正整数&#xff0c;通过空格分隔。 1<n<1000 示例 输入 4输出 …

iOS18 beta版本怎么回退至iOS17正式版本?

截止目前&#xff0c;苹果最近的iOS18的beta测试版本已经发了8版了&#xff0c;有许多朋友们都已升级提前尝鲜了&#xff0c;升级体验后许多果粉朋友们觉得有许多功能还是不够稳定&#xff0c;有些许bug&#xff0c;就想要降级&#xff0c;回退到iOS17的正式版&#xff0c;但又…

2024数博会技术成果回顾 | KPaaS助力企业数智化转型

2024年8月28日至30日&#xff0c;中国国际大数据产业博览会&#xff08;简称“数博会”&#xff09;在贵州省贵阳市隆重举行。本届数博会以“数智共生&#xff1a;开创数字经济高质量发展新未来”为主题&#xff0c;吸引了来自全球各地的400多家企业和2.1万余名嘉宾参与&#x…

AI自动生成PPT哪个软件好?如何自动生成专业级PPT?

新学期伊始&#xff0c;准备开学演讲稿的你是否还在为制作PPT而烦恼&#xff1f;别担心&#xff0c;现在有了AI的帮助&#xff0c;生成专业且吸引人的PPT变得轻而易举。 本文将为你揭秘4种高效的AI自动生成PPT的方法&#xff0c;让你在新学期的演讲中脱颖而出。无论是简洁明了…

Python | Leetcode Python题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; class Solution:def isRectangleCover(self, rectangles: List[List[int]]) -> bool:area, minX, minY, maxX, maxY 0, rectangles[0][0], rectangles[0][1], rectangles[0][2], rectangles[0][3]cnt defaultdict(int)for rect in rec…

glsl着色器学习 (十二)平移

平移和旋转、缩放是一样的&#xff0c;替换成平移矩阵即可&#xff1b; // 创建一个单位矩阵 const translateYMatrix mat4.create();// 沿着Y轴向下平移1个单位 mat4.fromTranslation(translateYMatrix, [0, -1, 0]);// 设置矩阵 gl.uniformMatrix4fv(matrixUniformLocation…

Linux进程状态 僵尸进程 孤儿进程

进程状态 R (running) Linux 的运行状态(循环空语句) S (sleeping) 阻塞状态 称为浅度睡眠(可以被唤醒)死循环打印语句时等待输入时使用 sleep 函数时 D (disk sleep) 也是一种阻塞状态&#xff0c;称为深度睡眠进程在等待磁盘写入完毕期间&#xff0c;这个进程不能被任何人杀…

2157. 优秀的拆分(power)

代码 #include<bits/stdc.h> using namespace std; int a[10001]; int main() {int n,t1,k0;bool flagfalse;cin>>n;if(n%21) {cout<<-1;return 0;}while(n>0){if(n%21){k;a[k]t; }nn/2;tt*2;}if(k>1) {flagtrue;for(int ik;i>1;i--)cout<&l…

oracle 数据库 day0823

ok了家人们&#xff0c;今天学习了orcle的基本用法&#xff0c;一日不见&#xff0c;如隔三秋啊&#xff0c; 一.多表联合查询 和之前学习的MySQL数据库一样的用法&#xff0c; 1.1 笛卡尔积查询 SELECT * FROM A表,B表 查询员工表和部门表 select * from emp e, dept d; e…

跨平台RTSP播放器之VLC Media Player还是SmartPlayer?

好多开发者纠结&#xff0c;RTSP流播放&#xff0c;到底是用开源的VLC Media Player还是大牛直播SDK的SmartPlayer&#xff1f;针对此&#xff0c;本文做个简单的技术探讨&#xff0c;方便开发者根据实际需要&#xff0c;做适合自己场景的选择&#xff1a; VLC Media Player …

flunet瞬态处理时均问题

fluent处理时均问题 最近遇到个同学&#xff0c;处理心脏跳动的时均问题&#xff0c;由于仅想取部分稳定时间段的时均数据&#xff0c;fluent的自动采样仅能对全部时间做处理&#xff0c;就存在问题了&#xff0c;网上看到两篇很详细的文章&#xff0c;记录下。 具体网址&…

截取pdf中的部分内容,又保证内容不失真,实现方式

文章目录 0.为什么需要截取pdf1.访问网站2.上传你需要截取的pdf文件3.选取区域下载 0.为什么需要截取pdf 如果直接截图工具截图的话&#xff0c;里面的文字和图片内容会出现失真的情况&#xff0c;但是我们希望pdf空白部分的内容不要&#xff0c;这个时候就需要截取pdf工具 1…

企业内部社区在企业起到什么作用?

企业内部社区是传播企业文化、促进员工互动和提升员工参与度的重要平台。通过企业内部社区&#xff0c;员工可以更好地理解和认同企业的核心价值观和文化理念&#xff0c;增强凝聚力和团队合作精神&#xff0c;进而提升企业的绩效和竞争力。企业内部社区有助于营造积极向上的工…

JVM学习《类加载运行-jvm内存模型》

目录 1.类加载过程 1.1 加载过程详解 1.2 类加载器 2.类加载器和双亲委派机制 3.JVM 对象创建与内存分配机制&#xff08;重要&#xff09; 3.1 对象的创建过程 3.2 对象的内存分配策略 4.JVM的内存模型 5.那些是GC Roots的对象有哪些&#xff1f; 1.类加载过程 通过类…

nacos适配人大金仓以及达梦-2.41

不想折腾直接查看源码 里面打包好了发行版本能直接使用 想折腾的具体看

白酒酿造:传统工艺与现代科技的整合

在千年的历史长河中&#xff0c;白酒酿造技艺如一颗璀璨的明珠&#xff0c;闪烁着中华文明的智慧光芒。如今&#xff0c;随着科技的飞速发展&#xff0c;传统酿造工艺与现代科技在这片古老的土地上交织碰撞&#xff0c;共同书写着白酒酿造的新篇章。豪迈白酒&#xff08;HOMANL…

分析源码学习c++(srs中http客户端)

文章目录 背景基础知识c标准库虚函数虚函数使用方法 虚析构函数 HTTP客户端使用方法TCP传输层分析使用方法结构分析连接函数读写函数 协议层分析初始化函数发送请求响应数据解析 背景 通过阅读源码&#xff0c;编写分析笔记来学习C是一种非常有效且深入的方法&#xff0c;能帮助…

Java导入包com.alibaba.fastjson2.JSONObject

com.alibaba.fastjson2.JSONObject 是阿里巴巴的 fastjson 库中的一个类&#xff0c;用于处理 JSON 数据。 这里提供一些常见的使用示例和可能的问题解决方法。 解决方案和示例代码: 创建 JSONObject 对象: import com.alibaba.fastjson2.JSONObject;JSONObject jsonObject …

Nginx: 使用KeepAlived配置实现虚IP在多服务器节点漂移及Nginx高可用原理

使用KeepAlived配置实现虚IP在多服务器节点漂移 1 &#xff09;环境准备 2台 linux , 一主一备 节点1&#xff1a;192.168.184.30 CentOS 7 Master节点2&#xff1a;192.168.184.40 CentOS 7 BackupVIP 192.168.184.50 安装 KeepAlived, $ yum install keepalived 注意&#x…

Jmeter、Python、Postman测试工具对比

一、JMeter 总结&#xff1a;适合对代码不敏感的使用人员&#xff0c;不会代码也可以完成接口自动化&#xff0c;设计框架。适合紧急迭代的项目。 JMeter接口测试的优势 小巧轻量级&#xff0c;并且开源免费&#xff0c;社区接受度高&#xff0c;比较容易入门支持多协议&…