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

基于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文件&#xff0c;配置mapper接口 <mappers><!--注解配置--><mapper…...

开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述

定义 开放词汇目标检测&#xff08;Open-Vocabulary Object Detection, OVOD&#xff09;是一种目标检测任务&#xff0c;旨在检测和识别那些未在训练集中明确标注的物体类别。传统的目标检测模型通常只能识别有限数量的预定义类别&#xff0c;而OVOD模型则具有识别“开放词汇…...

PHP基础

PHP代码标记 标准标记&#xff1a;<?php ?> PHP注释 单行&#xff1a;// # 多行&#xff1a;/* */ 两种浏览器输出文本的方式&#xff1a;echo 和 print echo <?php header("Content-Type:text/html;charsetutf-8"); // 输出字符串 ec…...

启用WSL后,使用ssh通道连接ubuntu

Enjoy WSL 目的 启用wsl后&#xff0c;使用windows自带的powershell、cmd操作linux还是不太好使。以下介绍开启ssh通道&#xff0c;并保证能在ssh通道下&#xff0c;也能正常使用wsl中的win命令行&#xff0c;以及正常打开gui应用。 离线更新WSL&#xff0c;请跳转链接:离线…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...