资源简介
此文件夹中包含棋盘图片集和代码文件夹,使用前请阅读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个文件信息
相关资源
- Opencv C++数字图像处理——空域增强
- 计算机图形学基础教程 VisualC++版 习
- 深入应用C++11完整版本.pdf.rar
- 大规模C++ 程序设计高清pdf
- 人群计数-c++实现内有caffemodel和deplo
- C++(qt)游戏实战项目:坦克大战(源
- Visual C++ Build Tools 2015 离线包.part7/7
- c++从入门到精通第2版
- Qt5.9C++开发指南 源码 资源.zip
- windows pe 权威指南.pdf C++反汇编与逆向
- VC++运行库一键安装
- yolov3+opencv3.4.2 C++源码
- Qt5.9 c++开发指南.part1.rar
- 编译原理--递归下降分析程序C++
- 深入理解C++11:C++11新特性解析与应用
- C++Test9.5的插件版3
- C++ Primer 5th Edition 中文 第5版 PDF 扫描
- c++builder 6技术大全
- MSVisualC++运行库/Microsoft Visual C++(20
- 信息学奥赛一本通C++版配套光盘文件
- C++并发编程实战 pdf
- C++程序设计谭浩强100%完整·清华大学
- Devc++ 5.11 绿色版
- C++程序设计 基础、编程抽象与算法策
- 《C++Primer》第五版中文版.zip
- CAD应用程序开发详解 Visual C++与Open
- 数字图像处理与机器视觉:第二版V
- C++数据结构原理与经典问题求解
- C++Primer中文版+C++ Primer Plus中文版
- C++GUI QT4编程PDF+源码
评论
共有 条评论