资源简介
使用OpenCV中的函数,进行张正友相机标定的程序 ,包含样例数据
代码片段和文件信息
#include “opencv.hpp“
#include
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
/*
@param File_Directory 为文件夹目录
@param FileType 为需要查找的文件类型
@param FilesName 为存放文件名的容器
*/
void getFilesName(string &File_Directory string &FileType vector&FilesName)
{
string buffer = File_Directory + “\\*“ + FileType;
_finddata_t c_file; // 存放文件名的结构体
long hFile;
hFile = _findfirst(buffer.c_str() &c_file); //找第一个文件命
if (hFile == -1L) // 检查文件夹目录下存在需要查找的文件
printf(“No %s files in current directory!\n“ FileType);
else
{
string fullFilePath;
do
{
fullFilePath.clear();
//名字
fullFilePath = File_Directory + “\\“ + c_file.name;
FilesName.push_back(fullFilePath);
} while (_findnext(hFile &c_file) == 0); //如果找到下个文件的名字成功的话就返回0否则返回-1
_findclose(hFile);
}
}
void m_calibration(vector &FilesName Size board_size Size square_size Mat &cameraMatrix Mat &distCoeffs vector &rvecsMat vector &tvecsMat)
{
ofstream fout(“caliberation_result.txt“); // 保存标定结果的文件
cout << “开始提取角点………………“ << endl;
int image_count = 0; // 图像数量
Size image_size; // 图像的尺寸
vector image_points; // 缓存每幅图像上检测到的角点
vector> image_points_seq; // 保存检测到的所有角点
for (int i = 0;i < FilesName.size();i++)
{
image_count++;
// 用于观察检验输出
cout << “image_count = “ << image_count << endl;
Mat imageInput = imread(FilesName[i]);
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;
}
/* 提取角点 */
bool ok = findChessboardCorners(imageInput board_size image_points CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_NORMALIZE_IMAGE);
if (0 == ok)
{
cout <<“第“<< image_count <<“张照片提取角点失败,请删除后,重新标定!“< imshow(“失败照片“ imageInput);
waitKey(0);
}
else
{
Mat view_gray;
cout << “imageInput.channels()=“ << imageInput.channels() << endl;
cvtColor(imageInput view_gray CV_RGB2GRAY);
/* 亚像素精确化 */
//find4QuadCornerSubpix(view_gray image_points Size(5 5)); //对粗提取的角点进行精确化
cv::cornerSubPix(view_gray image_points cv::Size(11 11) cv::Size(-1 -1) cv::TermCriteria(CV_TERMCRIT_ITER + CV_TERMCRIT_EPS 20 0.01));
image_points_seq.push_back(image_points); //保存亚像素角点
/* 在图像上显示角点位置 */
drawChessboardCorners(view_gray board_size image_points true);
//imshow(“Camera Calibration“ view_gray);//显示图片
//waitKey(100);//暂停0.1S
}
}
cout << “角点提取完成!!!“ << endl;
/*棋盘三维信息*/
vector
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-08-02 09:36 Calibration_multi\
目录 0 2017-07-11 10:08 Calibration_multi\.vs\
目录 0 2017-07-11 10:08 Calibration_multi\.vs\Calibration_multi\
目录 0 2017-07-11 10:08 Calibration_multi\.vs\Calibration_multi\v14\
文件 25600 2017-07-31 15:01 Calibration_multi\.vs\Calibration_multi\v14\.suo
目录 0 2017-07-31 14:58 Calibration_multi\Calibration_multi\
文件 7387 2017-07-11 20:31 Calibration_multi\Calibration_multi\Calibration_multi.vcxproj
文件 945 2017-07-11 20:31 Calibration_multi\Calibration_multi\Calibration_multi.vcxproj.filters
目录 0 2017-07-11 10:08 Calibration_multi\Calibration_multi\Debug\
目录 0 2017-07-11 10:08 Calibration_multi\Calibration_multi\Debug\Calibrat.FB4906BE.tlog\
文件 215 2017-07-11 10:08 Calibration_multi\Calibration_multi\Debug\Calibrat.FB4906BE.tlog\Calibration_multi.lastbuildstate
文件 3 2017-07-11 10:08 Calibration_multi\Calibration_multi\Debug\Calibration_multi.log
文件 0 2017-07-31 14:58 Calibration_multi\Calibration_multi\caliberation_result.txt
文件 8029 2017-08-02 09:35 Calibration_multi\Calibration_multi\main.cpp
目录 0 2017-07-11 20:31 Calibration_multi\Calibration_multi\x64\
目录 0 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\
目录 0 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibrat.FB4906BE.tlog\
文件 622 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibrat.FB4906BE.tlog\CL.command.1.tlog
文件 28364 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibrat.FB4906BE.tlog\CL.read.1.tlog
文件 500 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibrat.FB4906BE.tlog\CL.write.1.tlog
文件 198 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibrat.FB4906BE.tlog\Calibration_multi.lastbuildstate
文件 1268 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibrat.FB4906BE.tlog\li
文件 2972 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibrat.FB4906BE.tlog\li
文件 486 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibrat.FB4906BE.tlog\li
文件 1039 2017-07-31 14:31 Calibration_multi\Calibration_multi\x64\Debug\Calibration_multi.Build.CppClean.log
文件 1838 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\Calibration_multi.log
文件 2065527 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\main.obj
文件 1149952 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\vc140.idb
文件 2306048 2017-07-31 14:58 Calibration_multi\Calibration_multi\x64\Debug\vc140.pdb
文件 15495168 2017-07-31 15:01 Calibration_multi\Calibration_multi.VC.db
文件 1333 2017-07-11 10:08 Calibration_multi\Calibration_multi.sln
............此处省略20个文件信息
- 上一篇:myeclipse-2019.4.x破解工具.zip
- 下一篇:人员登记记录
相关资源
- HOG特征可视化C代码
- 基于vs2013+opencv实现的CT平扫式二维断
- 车牌识别完整版 基于OPENCV3 完全实现
- opencv实现多角度重建
- 车辆识别项目.rar
- 张正友相机标定Opencv实现完整程序+棋
- OpenCV计算机视觉编程攻略 (第2版)
- opencv视频行人检测1HOG+SVM
- OpenCV手势动作识别--石头剪刀布
- 图像匹配 目标轮廓匹配 基于OPENCV库
- opencv视觉导航小车寻迹
- 对图像的一维高斯滤波操作
- opencv420_boostdesc_bgm_vgg_generated.zip
- VS2010 Opencv-2.4.3的配置
- 基于opencv的三维重建代码
-
Robust Real-time ob
ject Detection 论文 整理 - opencv2.1+VS2008实现维纳滤波复原
- 相机标定讲解ppt
- opencv3.2交叉编译出来的库文件
- 基于opencv人脸识别的封装
- xfeatures2d.rar
- 基于OpenCV的视频车牌识别
- opencv 普通相机畸变标定校正
- 特征点匹配Demo
- OpenCV2.2 64位
- 基于SVM的手写数字识别Opencv+图像集
- 利用OpenCV(2.4.13)的SURF/SIFT + RANSAC
- asm算法 opencv实现
- OpenCV2.4.9_基于背景差分法的视频目标
- 基于OpenCV的疲劳驾驶检测系统的设计
评论
共有 条评论