资源简介

张正友相机标定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个文件信息

评论

共有 条评论