一.单目相机模型

二.OpenCV提供的相关函数





三.标定

准备文件:



运行(GIF动图)

最终标定结果:

附代码:

#include <opencv2\opencv.hpp>
#include <fstream>
#include <iostream>
#include <vector>using namespace std;
using namespace cv;int main()
{//读取所有图像vector<Mat> imgs;string imageName;ifstream fin("calibdata.txt");while (getline(fin, imageName)){Mat img = imread(imageName);imgs.push_back(img);}Size board_size = Size(9, 6);  //方格标定板内角点数目(行,列)vector<vector<Point2f>> imgsPoints;for (int i = 0; i < imgs.size(); i++){Mat img1 = imgs[i];Mat gray1;cvtColor(img1, gray1, COLOR_BGR2GRAY);vector<Point2f> img1_points;findChessboardCorners(gray1, board_size, img1_points);  //计算方格标定板角点find4QuadCornerSubpix(gray1, img1_points, Size(5, 5));  //细化方格标定板角点坐标bool pattern = true;drawChessboardCorners(img1,board_size,img1_points,pattern);imshow("img1",img1);waitKey(0);imgsPoints.push_back(img1_points);}//生成棋盘格每个内角点的空间三维坐标Size squareSize = Size(10, 10);  //棋盘格每个方格的真实尺寸vector<vector<Point3f>> objectPoints;for (int i = 0; i < imgsPoints.size(); i++){vector<Point3f> tempPointSet;for (int j = 0; j < board_size.height; j++){for (int k = 0; k < board_size.width; k++){Point3f realPoint;// 假设标定板为世界坐标系的z平面,即z=0realPoint.x = j*squareSize.width;realPoint.y = k*squareSize.height;realPoint.z = 0;tempPointSet.push_back(realPoint);}}objectPoints.push_back(tempPointSet);}/* 初始化每幅图像中的角点数量,假定每幅图像中都可以看到完整的标定板 */vector<int> point_number;for (int i = 0; i<imgsPoints.size(); i++){point_number.push_back(board_size.width*board_size.height);}//图像尺寸Size imageSize;imageSize.width = imgs[0].cols;imageSize.height = imgs[0].rows;Mat cameraMatrix = Mat(3, 3, CV_32FC1, Scalar::all(0));  //摄像机内参数矩阵Mat distCoeffs = Mat(1, 5, CV_32FC1, Scalar::all(0));  //摄像机的5个畸变系数:k1,k2,p1,p2,k3vector<Mat> rvecs;  //每幅图像的旋转向量vector<Mat> tvecs;  //每张图像的平移量calibrateCamera(objectPoints, imgsPoints, imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, 0);cout << "相机的内参矩阵=" << endl << cameraMatrix << endl;cout << "相机畸变系数" << distCoeffs << endl;waitKey(0);return 0;
}

OpenCV4每日一练day9:单目相机标定相关推荐

  1. OpenCV4每日一练day12:双目相机标定

    一.标定说明--<OpenCV4快速入门> 二.标定 文件准备: 运行结果: <OpenCV4快速入门>中的运行结果: 附上例代码: #include <opencv2\ ...

  2. 单目相机标定(使用OpenCV)

    关于相机标定的理论知识和使用Matlab软件进行相机标定请看这篇博文:单目相机标定(使用Matlab) 这次因为项目原因需要给海康工业相机进行标定了,下载Matlab软件有些麻烦(主要是我电脑内存小. ...

  3. 基于OpenCV的单目相机标定与三维定位

    相机是产生图像数据的硬件,广泛应用于消费电子.汽车.安防等领域.围绕着相机衍生出一系列的研究与应用领域,包括传统的图像处理和基于深度学习的智能应用等.目前大火的自动驾驶中相机也是重要的硬件组成,如环视 ...

  4. matlab单目相机标定

    文章目录 1.标定图片 2.标定 3.获取标定结果 使用matlab进行相机参数标定非常方便,相机畸变模型请参考另一篇文章相机内参与畸变模型,单目相机标定的结果就是得到相机内参与畸变系数. 1.标定图 ...

  5. 3.OpenCV可视化(Viz)——单目相机标定模拟

    单目相机标定模拟 基于OpenCV中的Viz模块,虚拟一个相机,设置相机的内参数.然后在相机视野下放置标定板,通过相机标定算法,最终再获取相机内参数. 当然最终相机标定还是存在误差,我猜测主要原因是标 ...

  6. 【计算机视觉】OpenCV实现单目相机标定

    文章目录 单目相机标定(基于Python OpenCV) 1.上期填坑 2.单目相机标定 2.1 数据采集 2.2 角点提取 2.3 参数求解 2.4 参数评估(重投影误差) 2.5 相机位姿(棋盘位 ...

  7. 单目相机标定实现--张正友标定法

    文章目录 一:相机坐标系,像素平面坐标系,世界坐标系,归一化坐标系介绍 1:概述 公式 二:实现 1:整体流程 4:求出每张图像的单应性矩阵并用LMA优化 5:求解理想无畸变情况下的摄像机的内参数和外 ...

  8. 单目相机标定 分辨率1920X1080 利用libuvc

    单目相机标定 分辨率1920X1080 利用libuvc libuvc 安装 开始标定 之前一直使用 usb_cam 但是默认分辨率是 640X480,调节到1920X1080后运行出错,干脆用lib ...

  9. SLAM学习 | 单目相机标定(附代码实测可用)

    SLAM学习 | 单目相机标定(附代码实测可用) 1 针孔相机模型 2 张正友标定法 3 VS2013下配置openCV 4 标定过程与结果 5 经验总结与注意事项 概要: 这篇文章介绍如何解决做SL ...

  10. 一文图解单目相机标定算法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 有一天,蟹老板找底下的员工川建国同学: 等蟹老板走后,然后转头问旁边的学霸李雷同学: 李雷同学整理了下 ...

最新文章

  1. Science | COVID-19大流行期间,研究重点应放在高质量研究
  2. wordpress 重新生成附件文件名
  3. linux shell putty 无法使用 home end 键
  4. 互联网1分钟 |1221
  5. 【收藏】HDFS的Java API使用
  6. 编程之美 求数组中的最长递增子序列
  7. iphone字体大小设置_Win10电脑桌面上使用的记事本便签软件字体大小怎么调整?...
  8. unix mysql备份_数据库操作 备份篇 unix
  9. 教师提升微能力_国培主讲风采录:信息技术再提升 微能力点巧研修
  10. Denise God Mode for mac(磁带饱和器音频插件)
  11. 三天两夜肝完这篇万字长文,终于拿下了 TCP/IP
  12. await js 报错_async/await优雅的错误处理方法总结
  13. 开发常用在线协作工具推荐
  14. 关于电感数字传感器的一些问题
  15. java爬取网页上qq号,邮箱号等
  16. 程序员面试中一面、二面、三面有什么区别?
  17. PHP会员自动续费,switch会员自动续费怎么关
  18. P9065 [yLOI2023] 云梦谣 题解
  19. keil(MDK)中出现error: #513:
  20. Python多线程多进程应用场景

热门文章

  1. Oracle(三)多行函数
  2. Java数据结构与算法解析(二)——栈
  3. 一致性哈希 php redis,使用一致性哈希实现Redis分布式部署
  4. sp+Ssh+Mysql实现的简单的企业物资信息管理
  5. Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(8)
  6. 从Windows复制文件到Linux显示乱码问题
  7. java selenium环境安装
  8. 弹层,iframe页面
  9. 枚举算法:最小连续n个合数。试求出最小的连续n个合数(其中n是键盘输入的任意正整数)。
  10. mysql索引实现原理_Mysql索引原理