基于matlab的单目相机标定
链接:
单目相机标定(使用Matlab)
用Matlab对单目相机参数的标定步骤(保姆级教程)
1.准备代码
调用摄像头代码(用于测试摄像头是否可用):
#https://blog.csdn.net/qq_37759113/article/details/124366513
import cv2def read_usb_capture():# 选择摄像头的编号camera = cv2.VideoCapture(0)# # 设置分辨率#camera.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)#camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 960)camera.set(cv2.CAP_PROP_FRAME_WIDTH, 1200)camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 900)# 添加这句是可以用鼠标拖动弹出的窗体cv2.namedWindow('real_img', cv2.WINDOW_NORMAL)while(camera.isOpened()):# 读取摄像头的画面ret, frame = camera.read()# 真实图cv2.imshow('real_img', frame)# 按下'q'就退出if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放画面camera.release()cv2.destroyAllWindows()if __name__ == '__main__':read_usb_capture()
使用摄像头拍照代码:
#https://www.jb51.net/article/256780.htm
import cv2
import sys
#引入库cap = cv2.VideoCapture(0) #读取笔记本内置摄像头或者0号摄像头i = 0
while True:ret, frame = cap.read()if (ret):cv2.namedWindow("Video01",0) #创建一个名为Video01的窗口,0表示窗口大小可调#cv2.resizeWindow("Video01",640,480) ##创建一个名为Video01的窗口,设置窗口大小为 1920 * 1080 与上一个设置的 0 有冲突#cv2.resizeWindow("Video01",640,330)cv2.imshow("Video01", frame)#等待按键按下c = cv2.waitKey(1) & 0xff#若按下w则保存一张照片if c ==ord("w"):cv2.imwrite("C:/Users/wuxiao/Desktop/test/%d.bmp" %i, frame) #自己设置拍摄的照片的存储位置print("Save images %d succeed!" %i)i+=1#若按下Q键,则退出循环if c == ord("q"):break#随时准备按q退出
cap.release()
#关掉所有窗口
cv2.destroyAllWindows()
图像剪裁代码(用于双目相机):
#https://www.jb51.net/article/256780.htm
import numpy as np
import cv2#img1 = cv2.imread(r"/Users/inbc/Desktop/zuo/Left1.bmp")
#img2 = cv2.imread(r"/Users/inbc/Desktop/you/Right1.bmp")
for i in range(0,31) :#imgT = cv2.imdecode(np.fromfile('./images/%d.bmp' %i ,dtype=np.uint8), -1)imgT = cv2.imdecode(np.fromfile('C:/Users/wuxiao/Desktop/stereo/%d.bmp' %i ,dtype=np.uint8), -1) #读取拍摄的左右双目照片# cv2.imshow("zuo", img1[300:1200, 500:2000])# cv2.imshow("you", img2[300:1200, 500:2000])# cv2.waitKey(0)#设置左右照片的存储位置cv2.imwrite("C:/Users/wuxiao/Desktop/stereo/zuo/reLeft%d.bmp" %i ,imgT[0:480, 0:320] )#imgL的第一个参数是图片高度像素范围,第二个参数是图片宽度的像素范围cv2.imwrite("C:/Users/wuxiao/Desktop/stereo/you/reRight%d.bmp" %i ,imgT[0:480, 320:640] )print("Resize images%d Fnished!" %i)print("Fnished All!!!")
2.具体操作
链接:
单目相机标定(使用Matlab)
用Matlab对单目相机参数的标定步骤(保姆级教程)
补充:
2.1. 删除误差过大的图片的操作
如右上角所示,单张图像误差会有较大的,点击柱状图中误差较大的一项,在最左边会蓝色显示该图片,右键点击“Remove and Recalibrate”即可删去该图(即计算内参时不考虑该图)

2.2. 内参中需要关注的三组参数
直接在命令行内输入:
cameraParams.IntrinsicMatrix%相机内参
cameraParams.RadialDistortion%相机径向畸变参数
cameraParams.TangentialDistortion%相机切向畸变参数

注意
matlab计算的内参矩阵与opencv的内参数据互为转置关系

相关文章:
基于matlab的单目相机标定
链接: 单目相机标定(使用Matlab) 用Matlab对单目相机参数的标定步骤(保姆级教程) 1.准备代码 调用摄像头代码(用于测试摄像头是否可用): #https://blog.csdn.net/qq_37759113/art…...
DB-GPT 智谱在线模型配置
LLM_MODELzhipu_proxyllm PROXY_SERVER_URLhttps://open.bigmodel.cn/api/paas/v4/chat/completions ZHIPU_MODEL_VERSIONglm-4 ZHIPU_PROXY_API_KEY70e8ec7113882ff5478fcecaa47522479.ExY2LyjcvWmqrTAf...
Navicat 17 功能简介 | SQL 美化
SQL美化 本期,我们将深入挖掘 Navicat 的实用的SQL代码美化功能。你只需简单地点击“SQL 美化”按钮,即可轻松完成 SQL 的格式化。 随着 17 版本的发布,Navicat 也带来了众多的新特性,包括兼容更多数据库、全新的模型设计、可视化…...
RTA_OS内核源码解析 3.9-任务激活
RTA_OS内核源码解析 3.9-任务激活 文章目录 RTA_OS内核源码解析 3.9-任务激活一、激活简介二、同步激活2.1 中断管理2.2 异常条件判断2.3 激活Task2.4 任务调度2.4.1 Os_RaiseCrossCoreISR2.4.2 Os_CrossCoreISR三、异步激活3.1 异常条件判断3.2 激活Task一、激活简介 一般将T…...
新能源汽车充电需求攀升,智慧移动充电服务有哪些实际应用场景?
在新能源汽车行业迅猛发展的今天,智慧充电桩作为支持这一变革的关键基础设施,正在多个实际应用场景中发挥着重要作用。从公共停车场到高速公路服务区,从企业园区到住宅小区,智慧充电桩不仅提供了便捷的充电服务,还通过…...
计算机的错误计算(一百八十六)
摘要 就上节(即(一百八十五))内容,有读者来信,建议用另外一个大模型计算。本节详细讲解该大模型的对错,特别是涉及 Python Decimal的内容以及泰勒展式内容。 例1. 已知 用大模型计算 下面是…...
当我用影刀AI Power做了一个旅游攻略小助手
在线体验地址:旅游攻略小助手https://power.yingdao.com/assistant/ca1dfe1c-9451-450e-a5f1-d270e938a3ad/share 运行效果图展示: 话不多说一起看下效果图: 智能体的截图: 工作流截图: 搭建逻辑: 其实这…...
首批|云轴科技ZStack成为开放智算产业联盟首批会员单位
近日 ,在Linux基金会AI & Data及中国开源软件推进联盟的指导之下,开放智算产业联盟成立大会在北京成功召开。在大会上,联盟首次公布了组织架构并颁发了首批会员单位证书。凭借ZStack AIOS平台智塔和在智算领域的技术创新,云轴…...
MMO之AOI
这章来说下AOI算法,常用的有九宫格,灯塔(九宫格优化版),四叉树,十字链表/三轴链表(加跳跃表) 写这章主要为了以后温故 方便 1: 一般AOI 的基本接口如下 enter:对象进入地图; leave:对象离开地图…...
linux---多线程
线程的基本概念 定义:在Linux中,线程是进程内部的一个执行单元,是进程的一个实体,它是CPU调度和分派的基本单位。一个进程可以包含多个线程,这些线程共享进程的资源,如代码段、数据段、打开的文件、信号处理…...
【JavaEE初阶】线程 和 thread
本节⽬标 认识多线程 掌握多线程程序的编写 掌握多线程的状态 一. 认识线程(Thread) 1概念 1) 线程是什么 ⼀个线程就是⼀个 "执⾏流". 每个线程之间都可以按照顺序执⾏⾃⼰的代码. 多个线程之间 "同时" 执⾏着多份代码. 还…...
如何规避eBay账号被封的风险?原因与对策
ebay是全球知名的跨境电商平台之一,吸引了不少的商家入驻。然而随着平台规则的不断更新和完善,很多ebay商家在运营的过程中,会遇到账号被封禁的问题。那ebay账号被封的原因有哪些?本文将带来详细的分析,帮助商家保护…...
Word使用分隔符实现页面部分分栏
文章目录 Word使用分隔符实现页面部分分栏分隔符使用页面设置 Word使用分隔符实现页面部分分栏 分隔符使用 word中的分隔符: 前面不分栏,后面分栏(或前面分栏,后面不分栏),只需要在分隔位置处插入分隔符:“连续”即…...
Express (nodejs) 相关
Express 相关 长乐未央学习视频东哥 1. 安装 express-generator 脚手架,新建项目 执行命令 npm install express express-generator4 -g 同时安装 express,和 express 脚手架. npm install express express-generator4 -g通过 express 脚手架创建 express 项目 exp…...
【Harmony Next】多个图文配合解释DevEco Studio工程中,如何配置App相关内容,一次解决多个问题?
解决App配置相关问题列表 1、Harmony Next如何配置图标? 2、Harmony Next如何配置App名称? 3、Harmony Next如何配置版本号? 4、Harmony Next如何配置Bundle ID? 5、Harmony Next如何配置build号? 6、Harmony Next多语言配置在哪…...
台球助教平台开发球厅预约选择机制和助教匹配选择机制详细需求实例说明(第十四章)
以下是对台球助教系统相关功能的详细规划描述: 一、预约助教功能 二、选择球厅练球功能 三、选择陪练时间功能 四、下单订单支付功能 一、预约助教功能 助教信息展示 在专门的 “助教预约” 页面,以列表形式呈现所有可供预约的台球助教。每个助教条目…...
MyBatis通过注解配置执行SQL语句原理源码分析
文章目录 前置准备流程简要分析配置文件解析加载 Mapper 接口MapperAnnotationBuilder解析接口方法注解parseStatement 方法详解MapperBuilderAssistant 前置准备 创建一个mybatis-config.xml文件,配置mapper接口 <mappers><!--注解配置--><mapper…...
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述
定义 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)是一种目标检测任务,旨在检测和识别那些未在训练集中明确标注的物体类别。传统的目标检测模型通常只能识别有限数量的预定义类别,而OVOD模型则具有识别“开放词汇…...
PHP基础
PHP代码标记 标准标记:<?php ?> PHP注释 单行:// # 多行:/* */ 两种浏览器输出文本的方式:echo 和 print echo <?php header("Content-Type:text/html;charsetutf-8"); // 输出字符串 ec…...
启用WSL后,使用ssh通道连接ubuntu
Enjoy WSL 目的 启用wsl后,使用windows自带的powershell、cmd操作linux还是不太好使。以下介绍开启ssh通道,并保证能在ssh通道下,也能正常使用wsl中的win命令行,以及正常打开gui应用。 离线更新WSL,请跳转链接:离线…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
