资源简介
张正友相机标定Opencv实现,附棋盘图和14张不同角度标定图。 包含完整的工程代码,有详细的注释说明,一键运行。实现了相机标定、输出相机内参、外参、旋转和平移矩阵、标定效果评价、以及使用标定结果对原始棋盘图进行矫正。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main(int argcchar* argv[])
{
ifstream fin(“calibdata.txt“);//标定所用图文件路径
ofstream fout(“caliberation_result.txt“);//保存标定结果的文件
//读取每一幅图像,从中提取角点,然后对角点进行亚像素精确化
cout<<“开始提取角点......“;//图片数量
int image_count = 0;
Size image_size;//图片尺寸
Size board_size = Size(46);//标定板上每行、每列的角点数
vector image_points_buf;//缓存每幅图像上检测到的角点
vector> image_points_seq;//保存检测到的所有角点
string filename;
int count = -1;//用于存储角点数
while(getline(finfilename))
{
image_count++;
//用于观察检测输出
cout<<“image_count = “< //输出检验
cout<<“-->count == 1“< Mat imageInput = imread(filename);
if(image_count == 1)
{
image_size.width = imageInput.cols;
image_size.height = imageInput.rows;
cout<<“image_size.width = “< cout<<“image_size.height = “< }
//提取角点
if(0 == findChessboardCorners(imageInputboard_sizeimage_points_buf))
{
cout<<“can not find chessboard corners!\n“;
exit(1);
}
else
{
Mat view_gray;
cvtColor(imageInputview_grayCV_BGR2GRAY);
find4QuadCornerSubpix(view_grayimage_points_bufSize(55));//亚像素精确化
image_points_seq.push_back(image_points_buf);//保存亚像素点
//图像上显示角点位置
drawChessboardCorners(view_grayboard_sizeimage_points_buffalse);
imshow(“Canmera Calibration“view_gray);
waitKey(500);
}
}
int total = image_points_seq.size();
cout<<“total = “< int CornerNum = board_size.width*board_size.height;//每张图片上总的角点数
for(int ii=0;ii {
if(0 == ii%CornerNum)
{
int i = -1;
i = ii / CornerNum;
int j = i + i;
cout<<“-->第“<< j <<“图片的数据-->: “< }
if(0 == ii % 3)
{
cout< }
else
{
cout.width(10);
}
cout<<“ -->“< cout<<“ -->“< }
cout<<“\n角点提取完成!\n“;
//以下是摄像机标定
cout<<“开始标定.....“< //棋盘三维信息
Size square_size = Size(1010);//实际测量得到的标定板上每个棋盘格的大小
vector> object_points;
//内外参数
Mat cameraMatrix = Mat(33CV_32FC1Scalar::all(0));//相机内参
vector point_counts;//每幅图像中角点的数量
Mat distCoeffs = Mat(15CV_32FC1Scalar::all(0));//摄像机的5个畸变系数k1k2p1p2k3
vector tvecsMat;//每幅图像的旋转向量
vector rvecsMat;//每幅图像的平移向量
//初始化标定板上角点的三维坐标
int ijt;
for(t=0;t {
vector tempPointSet;
for(i=0;i {
for(j=0;j {
Point3f realPoint;
//假设标定板放在世界坐标系中Z=0的平面上
realPoint.x = i*square_size.width;
realPoint.y = j*square_size.height;
realPoint.z = 0;
tempPointSet.push_back(realPoint);
}
}
object_points.push_back(tempPointSet);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 89499 2018-08-09 17:10 CameraCalibration\CameraCalibration\10_d.jpg
文件 99662 2018-08-09 17:10 CameraCalibration\CameraCalibration\11_d.jpg
文件 119179 2018-08-09 17:10 CameraCalibration\CameraCalibration\12_d.jpg
文件 112344 2018-08-09 17:10 CameraCalibration\CameraCalibration\13_d.jpg
文件 121183 2018-08-09 17:10 CameraCalibration\CameraCalibration\14_d.jpg
文件 98952 2018-08-09 17:10 CameraCalibration\CameraCalibration\1_d.jpg
文件 99438 2018-08-09 17:10 CameraCalibration\CameraCalibration\2_d.jpg
文件 108344 2018-08-09 17:10 CameraCalibration\CameraCalibration\3_d.jpg
文件 113297 2018-08-09 17:10 CameraCalibration\CameraCalibration\4_d.jpg
文件 114645 2018-08-09 17:10 CameraCalibration\CameraCalibration\5_d.jpg
文件 119171 2018-08-09 17:10 CameraCalibration\CameraCalibration\6_d.jpg
文件 101709 2018-08-09 17:10 CameraCalibration\CameraCalibration\7_d.jpg
文件 107642 2018-08-09 17:10 CameraCalibration\CameraCalibration\8_d.jpg
文件 89253 2018-08-09 17:10 CameraCalibration\CameraCalibration\9_d.jpg
文件 171 2016-10-26 00:26 CameraCalibration\CameraCalibration\calibdata.txt
文件 6416 2018-08-09 17:10 CameraCalibration\CameraCalibration\caliberation_result.txt
文件 6583 2018-08-09 17:09 CameraCalibration\CameraCalibration\Calibration.cpp
文件 3934 2018-08-08 19:14 CameraCalibration\CameraCalibration\CameraCalibration.vcxproj
文件 949 2018-08-08 19:14 CameraCalibration\CameraCalibration\CameraCalibration.vcxproj.filters
文件 143 2018-08-08 16:38 CameraCalibration\CameraCalibration\CameraCalibration.vcxproj.user
文件 921654 2009-12-31 16:23 CameraCalibration\CameraCalibration\chess1.bmp
文件 921654 2009-12-31 16:21 CameraCalibration\CameraCalibration\chess10.bmp
文件 921654 2009-12-31 16:22 CameraCalibration\CameraCalibration\chess11.bmp
文件 921654 2009-12-31 16:22 CameraCalibration\CameraCalibration\chess12.bmp
文件 921654 2009-12-31 16:22 CameraCalibration\CameraCalibration\chess13.bmp
文件 921654 2009-12-31 16:22 CameraCalibration\CameraCalibration\chess14.bmp
文件 921654 2009-12-31 16:24 CameraCalibration\CameraCalibration\chess2.bmp
文件 921654 2009-12-31 16:24 CameraCalibration\CameraCalibration\chess3.bmp
文件 921654 2009-12-31 16:24 CameraCalibration\CameraCalibration\chess4.bmp
文件 921654 2009-12-31 16:23 CameraCalibration\CameraCalibration\chess5.bmp
............此处省略40个文件信息
- 上一篇:大数据及其在税务中的应用
- 下一篇:硬件工程师笔试试题集锦(均有参考答案)
相关资源
- OpenCV算法实现参考文献
- opencv3.4.1的opencv_traincascade.exe 和 open
- 车辆分车道计数
- 学习OpenCV3中文版实力源码
- VCOpenCV视频前景物体提取标出运动轨迹
- opencv_ffmpeg_64.dll
- opencv_ffmpeg.dll
- Hands-On GPU-Accelerated Computer Vision with
- opencv3.4.0
- opencv-4.0.0-windows版本
- ippicv_2019_win_intel64_20180723_general.7z
- opencv使用cascade分类器训练人脸检测的
- 用于运动目标检测的视频。
- OpenCV 4.0.0 VS2017vc15编译后的lib、dll、
- OpenCV3编程入门_毛星云编著.pdf
- opencv_contrib-3.2.0,修复了各种文件和库
- VS串口通讯
- opencv 3.4.5 源码
- 人头分类器训练样本数据集
- opencv3.4.2在vs2015下的32位库-包括contr
- opencv3.4.2+VS2013已编译好的库
- OpenCV图像处理视频课程 - 贾志刚 PP
- opencv-4.10带nonfree.zip
- opencv-2.4.13 VS2015支持包编译好了可直接
- opencv2.2.0
- opencv3.1用SVM实现MNIST
- opencv调用海康威视摄像头并实时编码
- Learning_OpenCV_3.pdf
- 基于opencv车牌识别源码
- ippicv_2017u3_lnx_intel64_20170822.tgz包
评论
共有 条评论