资源简介
根据官方例程进行改变。进行三角测量的两种方法进行三维坐标计算,非全图三维重建,是特征点,这里使用的是棋盘格角点作为匹配点
代码片段和文件信息
// stereoCalibration.cpp : 定义控制台应用程序的入口点。
//
//在进行双目摄像头的标定之前,最好事先分别对两个摄像头进行单目视觉的标定
//分别确定两个摄像头的内参矩阵,然后再开始进行双目摄像头的标定
//在此例程中是先对两个摄像头进行单独标定(见上一篇单目标定文章),然后在进行立体标定
//#include “stdafx.h“
#include
#include
#include “cv.h“
#include
#include
using namespace std;
using namespace cv;
const int imageWidth = 640; //摄像头的分辨率
const int imageHeight = 480;
const int boardWidth = 9; //横向的角点数目
const int boardHeight = 6; //纵向的角点数据
const int boardCorner = boardWidth * boardHeight; //总的角点数据
const int frameNumber = 13; //相机标定时需要采用的图像帧数
const int squareSize = 20; //标定板黑白格子的大小 单位mm
const Size boardSize = Size(boardWidth boardHeight); //
Size imageSize = Size(imageWidth imageHeight);
Mat R T E F; //R 旋转矢量 T平移矢量 E本征矩阵 F基础矩阵
vector rvecs; //旋转向量
vector tvecs; //平移向量
vector> imagePointL; //左边摄像机所有照片角点的坐标集合
vector> imagePointR; //右边摄像机所有照片角点的坐标集合
vector> objRealPoint; //各副图像的角点的实际物理坐标集合
vector cornerL; //左边摄像机某一照片角点坐标集合
vector cornerR; //右边摄像机某一照片角点坐标集合
Mat rgbImageL grayImageL;
Mat rgbImageR grayImageR;
Mat Rl Rr Pl Pr Q; //校正旋转矩阵R,投影矩阵P 重投影矩阵Q (下面有具体的含义解释)
Mat mapLx mapLy mapRx mapRy; //映射表
Rect validROIL validROIR; //图像校正之后,会对图像进行裁剪,这里的validROI就是指裁剪之后的区域
/*
事先标定好的左相机的内参矩阵
fx 0 cx
0 fy cy
0 0 1
*/
Mat cameraMatrixL;/* = (Mat_(3 3) << 532.782 0 532.904
0 342.505 233.876
0 0 1);*/
Mat distCoeffL;// = (Mat_(5 1) << -0.28095 0.0255745 0.00122226 -0.000137736 0.162946);
/*
事先标定好的右相机的内参矩阵
fx 0 cx
0 fy cy
0 0 1
*/
Mat cameraMatrixR; /*= (Mat_(3 3) << 532.782 0 532.904
0 342.505 233.876
0 0 1);*/
Mat distCoeffR;// = (Mat_(5 1) << -0.28095 0.0255745 0.00122226 -0.000137736 0.162946);
/*计算标定板上模块的实际物理坐标*/
void calRealPoint(vector>& obj int boardwidth int boardheight int imgNumber int squaresize)
{
// Mat imgpoint(boardheight boardwidth CV_32FC3Scalar(000));
vector imgpoint;
for (int rowIndex = 0; rowIndex < boardheight; rowIndex++)
{
for (int colIndex = 0; colIndex < boardwidth; colIndex++)
{
// imgpoint.at(rowIndex colIndex) = Vec3f(rowIndex * squaresize colIndex*squaresize 0);
imgpoint.push_back(Point3f(rowIndex * squaresize colIndex * squaresize 0));
}
}
for (int imgIndex = 0; imgIndex < imgNumber; imgIndex++)
{
obj.push_back(imgpoint);
}
}
void outputCameraParam(void)
{
/*保存数据*/
/*输出数据*/
FileStorage fs(“intrinsics.yml“ FileStorage::WRITE);
if (fs.isOpened())
{
fs << “cameraMatrixL“ << cameraMatrixL << “cameraDistcoeffL“ << distCoeffL << “cameraMatrixR“ << cameraMatrixR << “cameraDistcoeffR“ << distCoeffR;
fs.release();
cout << “cameraMatrixL=:“ << cameraMatrixL << endl << “
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-25 10:57 opencv棋盘格标定\
目录 0 2019-04-15 10:25 opencv棋盘格标定\.vs\
目录 0 2019-04-15 10:25 opencv棋盘格标定\.vs\Project1\
目录 0 2019-04-15 10:25 opencv棋盘格标定\.vs\Project1\v14\
文件 42496 2019-04-25 10:57 opencv棋盘格标定\.vs\Project1\v14\.suo
目录 0 2019-04-25 10:57 opencv棋盘格标定\Debug\
目录 0 2019-04-25 10:56 opencv棋盘格标定\Project1\
文件 60 2015-07-06 21:54 opencv棋盘格标定\Project1\ClassDiagram.cd
文件 6124 2019-04-17 21:01 opencv棋盘格标定\Project1\Project1.vcxproj
文件 1015 2019-04-17 21:01 opencv棋盘格标定\Project1\Project1.vcxproj.filters
目录 0 2019-04-15 13:31 opencv棋盘格标定\Project1\calib\
文件 13126 2019-04-15 13:31 opencv棋盘格标定\Project1\calib\1.jpg
文件 1311798 2018-03-23 16:39 opencv棋盘格标定\Project1\calib\L5.bmp
文件 1311798 2018-03-23 16:39 opencv棋盘格标定\Project1\calib\L7.bmp
文件 1311798 2018-03-23 16:39 opencv棋盘格标定\Project1\calib\L9.bmp
文件 1311798 2018-03-23 16:39 opencv棋盘格标定\Project1\calib\R5.bmp
文件 1311798 2018-03-23 16:39 opencv棋盘格标定\Project1\calib\R7.bmp
文件 1311798 2018-03-23 16:39 opencv棋盘格标定\Project1\calib\R9.bmp
文件 1795 2019-04-25 10:56 opencv棋盘格标定\Project1\extrinsics.yml
文件 863 2019-04-25 10:56 opencv棋盘格标定\Project1\intrinsics.yml
文件 742 2018-11-19 20:12 opencv棋盘格标定\Project1\opencv.props
文件 1407 2019-04-25 10:56 opencv棋盘格标定\Project1\point3d.txt
目录 0 2019-04-15 11:25 opencv棋盘格标定\Project1\x64\
目录 0 2019-04-25 10:56 opencv棋盘格标定\Project1\x64\Debug\
文件 1020 2019-04-25 10:56 opencv棋盘格标定\Project1\x64\Debug\Project1.Build.CppClean.log
文件 1625 2019-04-25 10:56 opencv棋盘格标定\Project1\x64\Debug\Project1.log
目录 0 2019-04-25 10:56 opencv棋盘格标定\Project1\x64\Debug\Project1.tlog\
文件 542 2019-04-25 10:56 opencv棋盘格标定\Project1\x64\Debug\Project1.tlog\CL.command.1.tlog
文件 31664 2019-04-25 10:56 opencv棋盘格标定\Project1\x64\Debug\Project1.tlog\CL.read.1.tlog
文件 496 2019-04-25 10:56 opencv棋盘格标定\Project1\x64\Debug\Project1.tlog\CL.write.1.tlog
文件 177 2019-04-25 10:56 opencv棋盘格标定\Project1\x64\Debug\Project1.tlog\Project1.lastbuildstate
............此处省略15个文件信息
- 上一篇:2019王道计算机网络高清完整版带书签!
- 下一篇:智能垃圾分类.zip
相关资源
- 毕业设计:基于ARM-Linux的应用OpenCV和
- 图像放大waifu2x算法vs opencv实现
- Dalsa Nano 相机采集数据导入OpenCV
- 数码管数字识别--穿线法
- 基于背景差法的运动目标检测
- 2017年研究生数学建模D题二等奖
- 学习OpenCV(中文版高清扫描版带目录
- 2018 Learning OpenCV3 第三版 英文 高清完
- 基于opencv的车辆动态追踪
- opencv-4.10.zip
- 人脸识别,基于VS+openCV
- opencv3.4.0 vs2017编译的x86版本,可以直
- opencv-3.4.0 x86的Debug 和Release版本
- learning opencv3英文原版电子版学习ope
- opencv3.4.1+contrib+win10+vs2017已经编译好的
- opencv下实现显示并更改摄像头分辨率
- 利用openCV识别图片Demo
- OpenCV1.1版
- 基于opencv实现 LK跟踪算法
- OpenCV 3 Computer Vision Application Programmi
- cvMatchShapes
- 贾志刚Opencv图像处理视频教程学习笔
- opencv_3rdparty-ffmpeg-master_20161202.zip
- 学习opencv pdf
- vs2010+opencv 图像处理,边缘检测,可设
- OpenCV By Example.pdf
- opencv实现图像旋转任意角度边界正好
- zw_学习OpenCV(中文版).zip
- 学习OpenCV(中文版)pdf155532
- opencv3 神经网络字母识别源码.zip
评论
共有 条评论