前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JavaScript崩溃指南:你遇到过这些异常吗?

JavaScript崩溃指南:你遇到过这些异常吗?

原创
作者头像
zayyo
发布于 2023-11-01 12:21:56
发布于 2023-11-01 12:21:56
44301
代码可运行
举报
文章被收录于专栏:zayyo前端zayyo前端
运行总次数:1
代码可运行

今天让我们逐一详细罗列一下JavaScript的这些的错误类型,

  1. EvalError(eval错误)
    • EvalError ,通常用于表示与 eval() 函数相关的错误。eval() 函数用于在运行时执行动态生成的 JavaScript 代码。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   eval("alert('Hello, World!');");

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 EvalError: alert is not defined

}

代码语言:txt
复制
  1. RangeError(范围错误)
    • RangeError 表示一个值不在有效范围内的错误,通常涉及到数值超出了 JavaScript 的限制或范围。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const arr = new Array(Infinity);

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 RangeError: Invalid array length

}

代码语言:txt
复制
  1. ReferenceError(引用错误)
    • ReferenceError 表示尝试引用未定义的变量或对象的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   console.log(undefinedVariable);

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 ReferenceError: undefinedVariable is not defined

}

代码语言:txt
复制
  1. TypeError(类型错误)
    • TypeError 表示尝试在不支持的数据类型上执行操作或使用不允许的方法的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const number = 42;
代码语言:txt
AI代码解释
复制
   number.toUpperCase();

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 TypeError: number.toUpperCase is not a function

}

代码语言:txt
复制
  1. URIError(URI错误)
    • URIError 表示与 URI 相关的错误,通常涉及到对 URI 进行不正确的操作。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   decodeURIComponent('%');

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 URIError: URI malformed

}

代码语言:txt
复制
  1. SyntaxError(语法错误)
    • SyntaxError 表示代码包含语法错误,导致解析失败。这个错误类型通常由 JavaScript 引擎报告,WebIDL 中故意省略以保留给 ES 解析器使用。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   if (x > 10 {  // 抛出 SyntaxError: Unexpected token '{'
代码语言:txt
AI代码解释
复制
       // ...
代码语言:txt
AI代码解释
复制
   }

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. Error(通用错误)
    • Error 是一个通用的错误类型,通常被用于创建自定义错误对象。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   throw new Error('This is a custom error.');

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 Error: This is a custom error.

}

代码语言:txt
复制
  1. IndexSizeError(索引不在允许的范围内)
    • IndexSizeError 表示尝试使用不在允许范围内的索引值的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const arr = [1, 2, 3];
代码语言:txt
AI代码解释
复制
   const item = arr.item(10); // 抛出 IndexSizeError: Index or size is negative or greater than the allowed amount

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. HierarchyRequestError(节点树层次结构是不正确的)
    • HierarchyRequestError 表示尝试操作 DOM 节点树中的节点时,导致树的层次结构不正确的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const parent = document.createElement('div');
代码语言:txt
AI代码解释
复制
   const child = document.createElement('div');
代码语言:txt
AI代码解释
复制
   child.appendChild(parent); // 抛出 HierarchyRequestError: Failed to execute 'appendChild' on 'Node': The new child element contains the parent.

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. InvalidCharacterError(字符串包含无效字符)
    • InvalidCharacterError 表示尝试使用无效字符的字符串进行操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const invalidString = '\x01\x02\x03'; // 包含无效字符
代码语言:txt
AI代码解释
复制
   const element = document.createElement(invalidString); // 抛出 InvalidCharacterError: String contains an invalid character

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. NoModificationAllowedError(对象不能被修改)
    • NoModificationAllowedError 表示尝试修改不允许修改的对象时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const inputElement = document.createElement('input');
代码语言:txt
AI代码解释
复制
   inputElement.setAttribute('type', 'text'); // 抛出 NoModificationAllowedError: Cannot set attribute 'type' on readonly element.

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. NotFoundError(对象不能在这里被找到)
    • NotFoundError 表示尝试查找不存在的对象时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const element = document.querySelector('.nonexistent'); // 抛出 NotFoundError: An attempt was made to reference a Node in a context where it does not exist.

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e);

}

代码语言:txt
复制
  1. NotSupportedError(不支持的操作)
    • NotSupportedError 表示尝试执行不被当前环境或对象支持的操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   navigator.vibrate([200, 100, 200]); // 尝试在不支持振动的环境中执行振动操作

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 NotSupportedError: Vibration API is not supported in this environment.

}

代码语言:txt
复制
  1. InvalidStateError(对象是一个无效的状态)
    • InvalidStateError 表示尝试在对象处于无效状态时执行操作的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const audioElement = document.createElement('audio');
代码语言:txt
AI代码解释
复制
   audioElement.play(); // 尝试在未加载音频的情况下播放音频

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 InvalidStateError: play() can only be initiated by a user gesture.

}

代码语言:txt
复制
  1. SyntaxError(字符串不匹配预期的模式)
    • SyntaxError 表示尝试使用不符合预期模式的字符串时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   JSON.parse("{'name': 'John'}"); // 使用单引号而不是双引号包围属性名

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 SyntaxError: Unexpected token ' in JSON at position 2

}

代码语言:txt
复制
  1. InvalidModificationError(对象不能以这种方式被修改)
    • InvalidModificationError 表示尝试以不允许的方式修改对象时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const inputElement = document.createElement('input');
代码语言:txt
AI代码解释
复制
   inputElement.setAttribute('type', 'password'); // 尝试修改已创建的 input 元素的 type 属性

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 InvalidModificationError: Cannot set attribute 'type' on readonly element.

}

代码语言:txt
复制
  1. NamespaceError(操作在 XML 命名空间内不被允许)
    • NamespaceError 表示尝试在 XML 命名空间内执行不允许的操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const xmlDocument = new DOMParser().parseFromString("<book></book>", "text/xml");
代码语言:txt
AI代码解释
复制
   const element = xmlDocument.createElement("author"); // 尝试在 XML 命名空间中创建元素

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 NamespaceError: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

}

代码语言:txt
复制
  1. InvalidAccessError(对象不支持这种操作或参数)
    • InvalidAccessError 表示尝试使用不支持的操作或参数访问对象时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const canvas = document.createElement('canvas');
代码语言:txt
AI代码解释
复制
   canvas.getContext('webgl', { antialias: true }); // 尝试在不支持抗锯齿的情况下请求 WebGL 上下文

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 InvalidAccessError: Option 'antialias' is not supported by this context.

}

代码语言:txt
复制
  1. TypeMismatchError(对象的类型不匹配预期的类型)
    • TypeMismatchError 表示尝试将对象分配给不兼容的类型或参数时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const inputElement = document.createElement('input');
代码语言:txt
AI代码解释
复制
   inputElement.value = {}; // 尝试将对象分配给 input 元素的 value 属性

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 TypeMismatchError: The provided value is not a string.

}

代码语言:txt
复制
  1. SecurityError(此操作是不安全的)
    • SecurityError 表示尝试执行被浏览器安全策略限制的不安全操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const iframe = document.createElement('iframe');
代码语言:txt
AI代码解释
复制
   iframe.src = 'http://example.com'; // 尝试加载不安全的外部资源

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 SecurityError: Blocked a frame with origin "null" from accessing a cross-origin frame.

}

代码语言:txt
复制
  1. NetworkError(发生网络错误)
    • NetworkError 表示尝试执行网络请求或操作时发生的网络相关错误。
代码语言:javascript
代码运行次数:0
运行
复制

const xhr = new XMLHttpRequest();

xhr.open('GET', 'http://example.com/api/data', true);

xhr.send();

xhr.onerror = function () {

代码语言:txt
AI代码解释
复制
   console.error('NetworkError:', xhr.statusText); // 抛出 NetworkError: Failed to load

};

代码语言:txt
复制
  1. AbortError(操作被中止)
    • AbortError 表示尝试中止正在进行的操作时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

const xhr = new XMLHttpRequest();

xhr.open('GET', 'http://example.com/api/data', true);

xhr.send();

xhr.abort();

xhr.onerror = function () {

代码语言:txt
AI代码解释
复制
   console.error('AbortError:', xhr.statusText); // 抛出 AbortError: The operation was aborted.

};

代码语言:txt
复制
  1. URLMismatchError(给定的 URL 不匹配另一个 URL)
    • URLMismatchError 表示尝试将一个 URL 与另一个 URL 进行比较,但它们不匹配时的错误。
代码语言:javascript
代码运行次数:0
运行
复制

const url1 = new URL('http://example.com');

const url2 = new URL('http://example.org');

if (url1.href !== url2.href) {

代码语言:txt
AI代码解释
复制
   console.error('URLMismatchError: URLs do not match.'); // 抛出 URLMismatchError

}

代码语言:txt
复制
  1. QuotaExceededError(已经超过给定配额)
    • QuotaExceededError 表示尝试在已达到或超过了指定配额时执行某些操作的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   localStorage.setItem('key', 'value'); // 尝试存储数据,但已达到本地存储的容量配额

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 QuotaExceededError: The quota has been exceeded.

}

代码语言:txt
复制
  1. TimeoutError(操作超时)
    • TimeoutError 表示尝试执行的操作在超过指定的时间限制后仍未完成的错误。
代码语言:javascript
代码运行次数:0
运行
复制

const xhr = new XMLHttpRequest();

xhr.open('GET', 'http://example.com/api/slow', true);

xhr.timeout = 5000; // 设置超时时间为5秒

xhr.ontimeout = function () {

代码语言:txt
AI代码解释
复制
   console.error('TimeoutError: The operation timed out.'); // 抛出 TimeoutError

};

xhr.send();

代码语言:txt
复制
  1. InvalidNodeTypeError(这个操作的节点或节点祖先是不正确的)
    • InvalidNodeTypeError 表示尝试执行操作的节点或节点祖先类型不正确的错误。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const textNode = document.createTextNode('Text');
代码语言:txt
AI代码解释
复制
   textNode.appendChild(document.createElement('div')); // 尝试在文本节点上附加元素

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 InvalidNodeTypeError: Node cannot have children of type ELEMENT.

}

代码语言:txt
复制
  1. DataCloneError(对象不能克隆)
    • DataCloneError 表示尝试克隆对象失败的错误,通常在 Web Workers 等环境中使用。
代码语言:javascript
代码运行次数:0
运行
复制

try {

代码语言:txt
AI代码解释
复制
   const worker = new Worker('worker.js');
代码语言:txt
AI代码解释
复制
   worker.postMessage({ complexObject: new Int32Array(10) }, [new Int32Array(10).buffer]); // 尝试传递不可克隆的对象

} catch (e) {

代码语言:txt
AI代码解释
复制
   console.error(e); // 抛出 DataCloneError: The object could not be cloned.

}

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
计算机视觉-相机标定(Camera Calibration)
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定。简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵 P P P的过程。 无论是在图像测量或者机器视觉应用中,摄像机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性。因此,做好摄像机标定是做好后续工作的前提,是提高标定精度是科研工作的重点所在。其标定的目的就是为了相机内参、外参、畸变参数。
全栈程序员站长
2022/09/02
1.3K0
计算机视觉-相机标定(Camera Calibration)
相机标定的原理及实现
本文参考文档: 原理部分:https://blog.csdn.net/honyniu/article/details/51004397 代码部分:https://www.cnblogs.com/wildbloom/p/8320351.html ;https://blog.csdn.net/firemicrocosm/article/details/48594897#
全栈程序员站长
2022/09/01
2.1K0
【传感器标定】相机内参标定(c++、python代码)
读书猿
2024/02/05
8450
OpenCV 标定摄像头(Python 版本代码,视频中标定,亲测可用)
P=[fx0cx0fycy001] P = \begin{bmatrix} f_{x} &amp; 0 &amp; c_{x} \\ 0 &amp; f_{y} &amp; c_{y}\\ 0 &amp; 0 &amp; 1 \end{bmatrix} P=⎣⎡​fx​00​0fy​0​cx​cy​1​⎦⎤​
Frank909
2019/01/28
3.9K0
OpenCV 标定摄像头(Python 版本代码,视频中标定,亲测可用)
OpenCV 畸变矫正映射
https://developer-public-1258344699.cos.ap-guangzhou.myqcloud.com/column/column/10335061/20230218-2d58b817.png
为为为什么
2023/02/18
1.6K0
OpenCV 畸变矫正映射
镜头畸变校正
之前介绍了镜头畸变,本文记录校正畸变的模型和方法。 背景 对于常见的镜头径向畸变和切向畸变,在硬件已经无法继续优化时,需要后处理进行校正 模型 一些针孔摄像机会对图像产生严重的畸变,主要有两种畸变: 径向畸变和切向畸变。 径向畸变 径向畸变导致直线看起来弯曲。点距图像中心越远,径向畸变越大。例如,下图显示了一个棋盘的两个边缘用红线标记的图像。但是,你可以看到棋盘的边界不是一条直线,与红线不匹配。所有预期的直线都凸出。 径向畸变可以表示为以下模型 切向畸变 类似地,切向畸变发生是因为摄像透
为为为什么
2022/11/24
2.1K0
镜头畸变校正
张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图)
使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些?
用户1148525
2019/05/29
6.8K0
张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图)
Camera Calibration 摄像头标定
Pinhole camera calibration calls camera vision from 3D objects in the real world and transforms them into a 2D image.
vanguard
2020/02/27
1.4K0
使用双目相机进行三维重建 第一部分:相机校准
引言:后续的一系列文章会尝试解释用于从2D图片提取3D信息的一些重要工具和技术。3D重建对于很多应用来说是一个非常有用的工具,他可以构建人脸、场景、或其他物体的3D模型。这种模型是通过计算2D图像像素中的深度信息得到的。
AI研习社
2019/05/15
2.7K0
使用双目相机进行三维重建 第一部分:相机校准
OpenCV相机标定全过程
第一个参数是输入的棋盘格图像(可以是8位单通道或三通道图像); 第二个参数是棋盘格内部的角点的行列数(注意:不是棋盘格的行列数,如棋盘格的行列数分别为4、8,而内部角点的行列数分别是3、7,因此这里应该指定为cv::Size(3, 7)); 第三个参数是检测到的棋盘格角点,类型为std::vectorcv::Point2f。 第四个参数flag,用于指定在检测棋盘格角点的过程中所应用的一种或多种过滤方法,可以使用下面的一种或多种,如果都是用则使用OR: cv::CALIB_CB_ADAPTIVE_THRESH:使用自适应阈值将图像转化成二值图像 cv::CALIB_CB_NORMALIZE_IMAGE:归一化图像灰度系数(用直方图均衡化或者自适应阈值) cv::CALIB_CB_FILTER_QUADS:在轮廓提取阶段,使用附加条件排除错误的假设 cv::CALIB_CV_FAST_CHECK:快速检测
全栈程序员站长
2022/08/24
2.6K0
OpenCV相机标定全过程
相机标定——张正友棋盘格标定法
其中,R为旋转矩阵,t为平移向量,因为假定在世界坐标系中物点所在平面过世界坐标系原点且与Zw轴垂直(也即棋盘平面与Xw-Yw平面重合,目的在于方便后续计算),所以zw=0,可直接转换成式1的形式。其中变换矩阵
全栈程序员站长
2022/08/24
6.8K0
相机标定——张正友棋盘格标定法
一次实践:给自己的手机摄像头进行相机标定
不得不说,现在的计算机视觉技术已经发展到足够成熟的阶段了,还记得笔者刚工作的时候,相机标定还是个很神秘的技术,只有少数专业人员能够做,网上也找不到什么相关的资料。但是现在相机标定已经是一个非常普遍的技术了,也有不少的资料的可以参考,因此笔者突发奇想,既然那些大部头的相机可以标定,那么我们使用的手机摄像头一定也可以标定。因此,笔者就记录一下给自己手机摄像头的具体实践,算是弥补下当年没有学习到该技术的遗憾,毕竟要学习一项技术最好的办法就是亲自实践一下。
charlee44
2024/12/14
4290
一次实践:给自己的手机摄像头进行相机标定
SLAM初探(二)
相机标定 相机的内参矩阵 在OpenCV的3D重建中(opencv中文网站中:照相机定标与三维场景重建),对摄像机的内参外参有讲解: 外参:摄像机的旋转平移属于外参,用于描述相机在静态场景下相机的运动
Pulsar-V
2018/04/18
2K0
SLAM初探(二)
5_相机标定2_calibrateCamera()与内外参
https://docs.opencv.org/4.8.0/d4/d94/tutorial_camera_calibration.html
用户5908113
2024/03/20
6560
5_相机标定2_calibrateCamera()与内外参
综述 | 相机标定方法
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数(内参、外参、畸变参数)必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定(或摄像机标定)。无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。
AI算法与图像处理
2019/08/29
8570
综述 | 相机标定方法
自动驾驶视觉融合-相机校准与激光点云投影
多传感器融合一直是自动驾驶领域非常火的名词, 但是如何融合不同传感器的原始数据, 很多人对此都没有清晰的思路. 本文的目标是在KITTI数据集上实现激光雷达和相机的数据融合. 然而激光雷达得到的是3D点云, 而单目相机得到的是2D图像, 如何将3D空间中的点投影到图像平面上, 从而获得激光雷达与图像平面相交的区域, 是本文研究的重点. 其次本文会介绍相机这个大家常见的传感器, 以及讲解如何对相机进行畸变校准.
小白学视觉
2022/09/28
1.9K0
总结 | 相机标定的基本原理与改进方法
确定空间某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型(各个坐标系),这些坐标系之间的转换参数就是相机参数,求解参数的过程叫做相机标定(摄像机标定)。建立立体视觉系统所需要的各个坐标系,包括世界坐标系、相机坐标系、以及图像坐标系(物理和像素坐标系)。
3D视觉工坊
2020/12/11
3.4K0
总结 | 相机标定的基本原理与改进方法
使用OpenCV校准鱼眼镜头
当我们使用的鱼眼镜头视角大于160°时,OpenCV中用于校准镜头“经典”方法的效果可能就不是和理想了。即使我们仔细遵循OpenCV文档中的步骤,也可能会得到下面这个奇奇怪怪的照片:
小白学视觉
2022/04/06
1.9K0
使用OpenCV校准鱼眼镜头
双目视觉之相机标定
这里使用的是齐次坐标系,也就是可以进行任意尺度的缩放。比如我们把Hij乘以任意一个非零常数k并不改变等式结果
字节脉搏实验室
2020/12/18
2K0
一文讲透鱼眼相机畸变矫正,及目标检测项目应用 值得收藏
对于鱼眼相机的标定和矫正,网上已经有很多理论文章,但是落实到代码层面的并不多,而且大部分代码都是C++实现。
全栈程序员站长
2022/08/01
4.8K0
一文讲透鱼眼相机畸变矫正,及目标检测项目应用 值得收藏
推荐阅读
相关推荐
计算机视觉-相机标定(Camera Calibration)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档