资源简介
参考我的博客:http://blog.csdn.net/hongbin_xu/article/details/78988450
张正友相机标定完整工程实现,开发环境为(win10+VS2015+OpenCV3.1.0)

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
int main()
{
ifstream inImgPath(“calibdata.txt“); //标定所用图像文件的路径
vector imgList;
vector::iterator p;
string temp;
if (!inImgPath.is_open())
{
cout << “没有找到文件“ << endl;
}
//读取文件中保存的图片文件路径,并存放在数组中
while (getline(inImgPath temp))
{
imgList.push_back(temp);
}
ofstream fout(“caliberation_result.txt“); //保存标定结果的文件
cout << “开始提取角点......“ << endl;
cv::Size image_size;//保存图片大小
cv::Size pattern_size = cv::Size(4 6);//标定板上每行、每列的角点数;测试图片中的标定板上内角点数为4*6
vector corner_points_buf;//建一个数组缓存检测到的角点,通常采用Point2f形式
vector::iterator corner_points_buf_ptr;
vector> corner_points_of_all_imgs;
int image_num = 0;
string filename;
while(image_num < imgList.size())
{
filename = imgList[image_num++];
cout << “image_num = “ << image_num << endl;
cout << filename.c_str() << endl;
cv::Mat imageInput = cv::imread(filename.c_str());
if (image_num == 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 (findChessboardCorners(imageInput pattern_size corner_points_buf) == 0)
{
cout << “can not find chessboard corners!\n“; //找不到角点
exit(1);
}
else
{
cv::Mat gray;
cv::cvtColor(imageInput gray CV_RGB2GRAY);
cv::find4QuadCornerSubpix(gray corner_points_buf cv::Size(5 5));
corner_points_of_all_imgs.push_back(corner_points_buf);
cv::drawChessboardCorners(gray pattern_size corner_points_buf true);
cv::imshow(“camera calibration“ gray);
cv::waitKey(100);
}
}
int total = corner_points_of_all_imgs.size();
cout << “total=“ << total << endl;
int cornerNum = pattern_size.width * pattern_size.height;//每张图片上的总的角点数
for (int i = 0; i < total;i++)
{
cout << “--> 第“ << i + 1 << “幅图片的数据 -->:“ << endl;
for (int j = 0;j < cornerNum;j++)
{
cout << “-->“ << corner_points_of_all_imgs[i][j].x;
cout << “-->“ << corner_points_of_all_imgs[i][j].y;
if ((j + 1) % 3 == 0)
{
cout << endl;
}
else
{
cout.width(10);
}
}
cout << endl;
}
cout << endl << “角点提取完成“ << endl;
//摄像机标定
cout << “开始标定………………“ << endl;
cv::Mat cameraMatrix = cv::Mat(3 3 CV_32FC1 cv::Scalar::all(0));//内外参矩阵,H——单应性矩阵
cv::Mat distCoefficients = cv::Mat(1 5 CV_32FC1 cv::Scalar::all(0));//摄像机的5个畸变系数:k1k2p1p2k3
vector tvecsMat;//每幅图像的平移向量,t
vector rvecsMat;//每幅图像的旋转向量(罗德里格旋转向量)
vector> objectPoints;//保存所有图片的角点的三维坐标
//初始化每一张图片中标定板上角点的三维坐标
int i j k;
for (k = 0;k <
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-01-06 17:25 testCameraCalibration\
目录 0 2018-01-06 12:48 testCameraCalibration\.vs\
目录 0 2018-01-06 12:48 testCameraCalibration\.vs\testCameraCalibration\
目录 0 2018-01-06 12:48 testCameraCalibration\.vs\testCameraCalibration\v14\
文件 32256 2018-01-06 17:25 testCameraCalibration\.vs\testCameraCalibration\v14\.suo
目录 0 2018-01-06 12:48 testCameraCalibration\Debug\
目录 0 2018-01-06 14:03 testCameraCalibration\testCameraCalibration\
文件 1345 2018-01-06 12:48 testCameraCalibration\testCameraCalibration.sln
文件 13533184 2018-01-06 17:25 testCameraCalibration\testCameraCalibration.VC.db
文件 96914 2018-01-06 17:22 testCameraCalibration\testCameraCalibration\10_d.jpg
文件 105567 2018-01-06 17:22 testCameraCalibration\testCameraCalibration\11_d.jpg
文件 122697 2018-01-06 17:22 testCameraCalibration\testCameraCalibration\12_d.jpg
文件 116777 2018-01-06 17:22 testCameraCalibration\testCameraCalibration\13_d.jpg
文件 125110 2018-01-06 17:22 testCameraCalibration\testCameraCalibration\14_d.jpg
文件 106607 2018-01-06 17:21 testCameraCalibration\testCameraCalibration\1_d.jpg
文件 101875 2018-01-06 17:21 testCameraCalibration\testCameraCalibration\2_d.jpg
文件 111613 2018-01-06 17:21 testCameraCalibration\testCameraCalibration\3_d.jpg
文件 115462 2018-01-06 17:21 testCameraCalibration\testCameraCalibration\4_d.jpg
文件 118556 2018-01-06 17:21 testCameraCalibration\testCameraCalibration\5_d.jpg
文件 123183 2018-01-06 17:21 testCameraCalibration\testCameraCalibration\6_d.jpg
文件 107267 2018-01-06 17:22 testCameraCalibration\testCameraCalibration\7_d.jpg
文件 110507 2018-01-06 17:22 testCameraCalibration\testCameraCalibration\8_d.jpg
文件 96209 2018-01-06 17:22 testCameraCalibration\testCameraCalibration\9_d.jpg
文件 1305 2017-12-26 10:55 testCameraCalibration\testCameraCalibration\calibdata.txt
文件 6322 2018-01-06 17:21 testCameraCalibration\testCameraCalibration\caliberation_result.txt
目录 0 2018-01-06 12:48 testCameraCalibration\testCameraCalibration\Debug\
目录 0 2018-01-06 12:48 testCameraCalibration\testCameraCalibration\Debug\testCame.cf59b612.tlog\
文件 8072 2018-01-06 12:49 testCameraCalibration\testCameraCalibration\testCameraCalibration.vcxproj
文件 944 2018-01-06 12:49 testCameraCalibration\testCameraCalibration\testCameraCalibration.vcxproj.filters
目录 0 2018-01-06 12:49 testCameraCalibration\testCameraCalibration\x64\
目录 0 2018-01-06 17:21 testCameraCalibration\testCameraCalibration\x64\Debug\
............此处省略19个文件信息
相关资源
- 三维重建(旋转)由已知对应图像点
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- 基于图像三维重建软件visualSFM
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
评论
共有 条评论