首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不同分辨率相机的C++ Opencv标定

不同分辨率相机的C++ Opencv标定
EN

Stack Overflow用户
提问于 2017-07-03 14:27:30
回答 1查看 4.9K关注 0票数 3

我的相机有不同的分辨率1280*480 640*240 320*120

利用Opencv3算法标定了分辨率为1280*480的摄像机,得到了摄像机矩阵(fx Cy)和畸变矩阵(k1 k2 p1 p2 K3)。

但是现在我想用这些相机矩阵和失真矩阵来校准相机的分辨率为320*120。我不知道如何将第1280*480号决议的这两个矩阵应用到320*120的决议中。由于图像太小,Opencv算法找不到棋盘,所以我还没有直接校准320*120分辨率的相机。

我想知道如果我改变分辨率1280*480到320*120,相机矩阵(fx fy cx Cy)和失真矩阵(k1 k2 p1 p2 k3)将如何改变。

opencv的算法如下:calibration.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-03 14:43:43

你不需要改变扭曲矩阵。至于相机矩阵(包含fx, fy, cx, cy的矩阵),您只需将它们除以4。一般的公式是:

代码语言:javascript
运行
复制
fx' = (dimx' / dimx) * fx 
fy' = (dimy' / dimy) * fy

fx'是新分辨率的值,fx是原始分辨率的值,dimx'是x轴上的新分辨率,dimx是原始分辨率。这同样适用于fy

cxcy是类比计算的,因为所有这些值都是用像素坐标表示的。

根据关于相机矩阵的OpenCV文档

如果相机的图像被因子缩放,那么所有这些参数都应该被缩放(分别乘以/除以)到相同的因子。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44888119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档