-
大小: 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个文件信息
评论
共有 条评论