• 大小: 81.92MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2022-09-15
  • 语言: C/C++
  • 标签: opencv  C++  相机标定  

资源简介

此文件夹中包含棋盘图片集和代码文件夹,使用前请阅读readme.txt,里面写了使用方法,此文件能够成功输出标定误差及一些相机参数,实现摄像机标定

资源截图

代码片段和文件信息

// chassboard.cpp : 此文件包含 “main“ 函数。程序执行将在此处开始并结束。
//

#include “pch.h“
#include 
#include “opencv2/core/core.hpp“  
#include “opencv2/imgproc/imgproc.hpp“  
#include “opencv2/calib3d/calib3d.hpp“  
#include “opencv2/highgui/highgui.hpp“  
#include   
#include 
#include 
#include 
using namespace cv;
using namespace std;

int main()
{
ifstream fin(“chassread.txt“); /* 标定所用图像文件的路径 */
ofstream fout(“chassoutput.txt“);  /* 保存标定结果的文件 */
   //读取每一幅图像,从中提取出角点,然后对角点进行亚像素精确化   
cout << “开始提取角点………………“;
int image_count = 0;  /* 图像数量 */
Size image_size;  /* 图像的尺寸 */
Size board_size = Size(10 7);    /* 标定板上每行、列的角点数(不算图像边界) */
vector image_points_buf;  /* 缓存每幅图像上检测到的角点 */
vector> image_points_seq; /* 保存检测到的所有角点 */
string filename;
int count = 0;//用于存储角点个数。  
while (getline(fin filename))
{
image_count++;
// 用于观察检验输出  
cout << “image_count = “ << image_count << endl;
//cout << “-->count = “ << count< Mat imageInput = imread(filename);

cout << “filename:“ << filename << endl;
if (image_count == 1)  //读入第一张图片时获取图像宽高信息  
{
image_size.width = imageInput.cols;
image_size.height = imageInput.rows;
cout << “image_size.width = “ << image_size.width << endl;
cout << “image_size.height = “ << image_size.height << endl;
}

/* 提取角点 */
if (0 == findChessboardCorners(imageInput board_size image_points_buf))
{
cout << “can not find chessboard corners!\n“; //找不到角点  
exit(1);
}
else
{
Mat view_gray;
cvtColor(imageInput view_gray CV_RGB2GRAY);
/* 亚像素精确化 */
cornerSubPix(view_gray image_points_buf Size(5 5) Size(-1 -1) TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER 30 0.1));
//亚像素精确化方法二
//Size(55)是搜索窗口的大小Size(-1-1)表示没有死区
//第四个参数定义求角点的迭代过程的终止条件,可以为迭代次数和角点精度两者的组合
count += image_points_buf.size();
image_points_seq.push_back(image_points_buf);//保存亚像素角点
drawChessboardCorners(view_gray board_size image_points_buf false);
//用于绘制被成功标定的角点,输入8位灰度或者彩色图像
//第四个参数是标志位,用来指示定义的棋盘内角点是否被完整的探测到
//false表示有未被探测到的内角点,这时候函数会以圆圈标记出检测到的内角点
namedWindow(“Camera Calibration“ WINDOW_NORMAL);
imshow(“Camera Calibration“ view_gray);//显示图片
waitKey(500);
}
}
int total = image_points_seq.size();
cout << “total = “ << total << endl;
int CornerNum = board_size.width*board_size.height;  //每张图片上总的角点数  
for (int ii = 0; ii < total; ii++)
{
if (0 == ii % CornerNum)// 54 是每幅图片的角点个数。此判断语句是为了输出 图片号,便于控制台观看   
{
int i = -1;
i = ii / CornerNum;
int j = i + 1;
cout << “--> 第 “ << j << “图片的数据 --> : “ << endl;
}
if (0 == ii % 3)  // 此判断语句,格式化输出,便于控制台查看  
{
cout << endl;
}
else
{
cout.width(10);
}
//输出所有的角点  
cout << “ -->“ << image_points_seq[ii][0].x;
cout << “ -->“ << image_points_seq[ii][0].y;
}
cout << “角点提取完成!\n“;

//以下是摄像机标定  
cout << “开始标定………………“;
/*棋盘

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-04-10 15:28  chass\
     文件     1279411  2019-04-10 15:28  chass\chass1.jpg
     文件     1303380  2019-04-10 15:28  chass\chass10.jpg
     文件     1191621  2019-04-10 15:28  chass\chass11.jpg
     文件     1209614  2019-04-10 15:28  chass\chass12.jpg
     文件     1339557  2019-04-10 15:28  chass\chass13.jpg
     文件     1132406  2019-04-10 15:28  chass\chass14.jpg
     文件     1193659  2019-04-10 15:28  chass\chass15.jpg
     文件     1289723  2019-04-10 15:28  chass\chass16.jpg
     文件     1177490  2019-04-10 15:28  chass\chass17.jpg
     文件     1177847  2019-04-10 15:28  chass\chass18.jpg
     文件     1357712  2019-04-10 15:28  chass\chass19.jpg
     文件     1154993  2019-04-10 15:28  chass\chass2.jpg
     文件     1350788  2019-04-10 15:28  chass\chass20.jpg
     文件     1304944  2019-04-10 15:28  chass\chass21.jpg
     文件     1392445  2019-04-10 15:28  chass\chass22.jpg
     文件     1166829  2019-04-10 15:28  chass\chass23.jpg
     文件     1181574  2019-04-10 15:28  chass\chass24.jpg
     文件     1263994  2019-04-10 15:28  chass\chass25.jpg
     文件     1273034  2019-04-10 15:28  chass\chass26.jpg
     文件     1208757  2019-04-10 15:28  chass\chass27.jpg
     文件     1270539  2019-04-10 15:28  chass\chass28.jpg
     文件     1273464  2019-04-10 15:28  chass\chass3.jpg
     文件     1279395  2019-04-10 15:28  chass\chass4.jpg
     文件     1413078  2019-04-10 15:28  chass\chass5.jpg
     文件     1315784  2019-04-10 15:28  chass\chass6.jpg
     文件     1168550  2019-04-10 15:28  chass\chass7.jpg
     文件     1191964  2019-04-10 15:28  chass\chass8.jpg
     文件     1339661  2019-04-10 15:28  chass\chass9.jpg
     目录           0  2019-04-13 14:02  chassboard\
     目录           0  2019-04-13 14:01  chassboard\.vs\
............此处省略73个文件信息

评论

共有 条评论