• 大小: 95.67MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-03-02
  • 语言: Matlab
  • 标签:

资源简介

张正友相机标定Opencv实现,附棋盘格打印pdf和10张手机相机拍摄标定图、20张摄像头拍摄标定图。 包含完整的VS2015工程代码,有详细的注释说明,一键运行。实现了相机标定、输出相机内参、外参、旋转和平移矩阵、标定效果评价、以及使用标定结果对原始棋盘图进行矫正。标定结果与Matlab的非常接近

资源截图

代码片段和文件信息

#include 
#include 
#include 

using namespace cv;
using namespace std;

int main()
{
ifstream fin(“phonecamera_data/calibdata.txt“); /* 标定所用图像文件的路径 */
ofstream fout(“phonecamera_data/caliberation_result.txt“);  /* 保存标定结果的文件 */

if (!fin) {
cout << “Calibration image txt read failed“ << endl;
return 0;
}

//读取每一幅图像,从中提取出角点,然后对角点进行亚像素精确化 
cout << “………………开始提取角点………………“ << endl;
int image_count = 0;  /* 图像数量 */
Size patternSize = Size(8 6);    /* 标定板上每行、列的角点数,注意8和6的顺序 */
int corner_count = patternSize.height * patternSize.width;
Size imageSize;
vector corners;  /* 缓存每幅图像上检测到的角点 */
vector> cornersList; /* 保存检测到的所有角点 */
string filename;
vector filenameList;

while (getline(fin filename)) 
{
image_count++;

filenameList.push_back(filename);
Mat img = imread(filename);
if (img.empty()) {
cout << “读取图像失败“ << endl;
}
if (image_count == 1) {
imageSize.height = img.rows;
imageSize.width = img.cols;
cout << “imageSize: “ << imageSize.height << “ * “ << imageSize.width << endl;
}
cout << “image: “ << image_count;

// 提取角点
if (findChessboardCorners(img patternSize corners) == 0){
cout << “can not find chessboard corners!\n“; //找不到角点
exit(1);
}
else

// 亚像素精确化
Mat gray;
cvtColor(img gray COLOR_BGR2GRAY);
find4QuadCornerSubpix(gray corners Size(5 5)); //对粗提取的角点进行精确化
cornersList.push_back(corners);  //保存亚像素角点

cout << “\t角点数量: “ << corners.size() << endl;

// 在图像上显示角点位置
drawChessboardCorners(img patternSize corners true); //用于在图片中标记角点
namedWindow(“image“ 0);
imshow(“image“ img);//显示图片
waitKey(500);//暂停0.5s     
}
}
cout << “………………角点提取完成………………“ << endl;

// 以下是摄像机标定
cout << “………………开始标定………………“ << endl;
// 棋盘三维信息
Size squareSize = Size(28 28);  /* 实际测量得到的标定板上每个棋盘格的大小,单位mm */
vector> objectPoints; /* 保存标定板上角点的三维坐标 */
// 内外参数
Mat cameraMatrix = Mat(3 3 CV_32FC1 Scalar::all(0)); /* 摄像机内参数矩阵 */
Mat distCoeffs = Mat(1 5 CV_32FC1 Scalar::all(0)); /* 摄像机的5个畸变系数:k1k2p1p2k3 */
vector tvecsMat; /* 每幅图像的平移向量 */
vector rvecsMat; /* 每幅图像的旋转向量 */
// 初始化标定板上角点的三维坐标 
for (int t = 0; t {
vector tempPointSet;
for (int i = 0; i {
for (int j = 0; j {
Point3f realPoint;
/* 假设标定板放在世界坐标系中z=0的平面上 */
realPoint.x = j * squareSize.width;
realPoint.y = i * squareSize.height;
realPoint.z = 0;
tempPointSet.push_back(realPoint);
}
}
objectPoints.push_back(tempPointSet);
}

// 开始标定 
calibrateCamera(objectPoints cornersList imageSize cameraMatrix distCoeffs rvecsMat tvecsMat 0);
cout << “………………标定完成………………“ << endl;

// 对标定结果进行评价
cout << “………………开始评价标定结果………………“ << endl;
double total_err = 0.0; /* 所有图像的平均误差的总和 */
double 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     29184  2019-03-01 11:35  camera_calibration\.vs\camera_calibration\v14\.suo

     文件         63  2019-02-28 19:53  camera_calibration\camera_calibration\calibdata.bat

     文件       1411  2019-02-28 19:53  camera_calibration\camera_calibration\calibdata.txt

     文件       4040  2019-02-28 19:40  camera_calibration\camera_calibration\caliberation_result.txt

     文件       7388  2019-02-26 16:30  camera_calibration\camera_calibration\camera_calibration.vcxproj

     文件        945  2019-02-26 16:30  camera_calibration\camera_calibration\camera_calibration.vcxproj.filters

     文件         51  2019-02-28 19:54  camera_calibration\camera_calibration\camera_data\calibdata.bat

     文件       1411  2019-02-28 19:54  camera_calibration\camera_calibration\camera_data\calibdata.txt

     文件       7892  2019-02-28 20:10  camera_calibration\camera_calibration\camera_data\caliberation_result.txt

     文件      60191  2019-02-27 19:58  camera_calibration\camera_calibration\camera_data\IMG1.jpg

     文件      63339  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG10.jpg

     文件      69560  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG11.jpg

     文件      69602  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG12.jpg

     文件      60973  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG13.jpg

     文件      62529  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG14.jpg

     文件      66670  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG15.jpg

     文件      64175  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG16.jpg

     文件      62403  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG17.jpg

     文件      65308  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG18.jpg

     文件      65156  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG19.jpg

     文件      56360  2019-02-27 19:59  camera_calibration\camera_calibration\camera_data\IMG2.jpg

     文件      63058  2019-02-27 20:00  camera_calibration\camera_calibration\camera_data\IMG20.jpg

     文件      68349  2019-02-27 19:59  camera_calibration\camera_calibration\camera_data\IMG3.jpg

     文件      68312  2019-02-27 19:59  camera_calibration\camera_calibration\camera_data\IMG4.jpg

     文件      60664  2019-02-27 19:59  camera_calibration\camera_calibration\camera_data\IMG5.jpg

     文件      67381  2019-02-27 19:59  camera_calibration\camera_calibration\camera_data\IMG6.jpg

     文件      69387  2019-02-27 19:59  camera_calibration\camera_calibration\camera_data\IMG7.jpg

     文件      67035  2019-02-27 19:59  camera_calibration\camera_calibration\camera_data\IMG8.jpg

     文件      66476  2019-02-27 19:59  camera_calibration\camera_calibration\camera_data\IMG9.jpg

     文件      54535  2019-02-28 20:10  camera_calibration\camera_calibration\camera_data\ud_IMG1.jpg

............此处省略96个文件信息

评论

共有 条评论