资源简介
使用OpenCV中的calibrateCamera函数进行张正友相机标定,得到相机内参矩阵。
代码片段和文件信息
#include “opencv2/core/core.hpp“
#include “opencv2/imgproc/imgproc.hpp“
#include “opencv2/calib3d/calib3d.hpp“
#include “opencv2/highgui/highgui.hpp“
#include
#include
using namespace cv;
using namespace std;
enum { DETECTION = 0 CAPTURING = 1 CALIBRATED = 2 };
int main()
{
/************************************************************************
从摄像机中读取多幅图像从中提取出角点,然后对角点进行亚像素精确化
*************************************************************************/
int image_count= 10; /**** 图像数量 ****/
Mat frame;
Size image_size; /**** 图像的尺寸 ****/
Size board_size = Size(96); /**** 定标板上每行、列的角点数 ****/
vector corners; /**** 缓存每幅图像上检测到的角点 ****/
vector> corners_Seq; /**** 保存检测到的所有角点 ****/
ofstream fout(“calibration_result.txt“); /** 保存定标结果的文件 **/
int mode = DETECTION;
VideoCapture cap(1);
cap.set(CV_CAP_PROP_frame_WIDTH640);
cap.set(CV_CAP_PROP_frame_HEIGHT480);
if(!cap.isOpened()){
std::cout<<“打开摄像头失败,退出“;
exit(-1);
}
namedWindow(“Calibration“);
std::cout<<“Press ‘g‘ to start capturing images!“<
int count = 0n=0;
stringstream tempname;
string filename;
int key;
string msg;
int baseLine;
Size textSize;
while(n < image_count )
{
frame.setTo(0);
cap>>frame;
if(mode == DETECTION)
{
key = 0xff & waitKey(30);
if( (key & 255) == 27 )
break;
if( cap.isOpened() && key == ‘g‘ )
{
mode = CAPTURING;
}
}
if(mode == CAPTURING)
{
key = 0xff & waitKey(30);
if( (key & 255) == 32 )
{
image_size = frame.size();
/* 提取角点 */
Mat imageGray;
cvtColor(frame imageGray CV_RGB2GRAY);
bool patternfound = findChessboardCorners(frame board_size cornersCALIB_CB_ADAPTIVE_THRESH + CALIB_CB_NORMALIZE_IMAGE + CALIB_CB_FAST_CHECK );
if (patternfound)
{
n++;
tempname< tempname>>filename;
filename+=“.jpg“;
/* 亚像素精确化 */
cornerSubPix(imageGray corners Size(11 11) Size(-1 -1) TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER 30 0.1));
count += corners.size();
corners_Seq.push_back(corners);
imwrite(filenameframe);
tempname.clear();
filename.clear();
}
else
{
std::cout<<“Detect Failed.\n“;
}
}
}
msg = mode == CAPTURING ? “100/100/s“ : mode == CALIBRATED ? “Calibrated“ : “Press ‘g‘ to start“;
baseLine = 0;
textSize = getTextSize(msg 1 1 1 &baseLine);
Point textOrigin(frame.cols - 2*textSize.width - 10 frame.rows - 2*baseLine - 10);
if( mode == CAPTURING )
{
msg = format( “%d/%d“nimage_count);
}
putText( frame msg textOrigin 1 1mode != CALIBRATED ? Scalar(00255) : Scalar(02550));
imshow(“Calibration“frame);
key = 0xff & waitKey(1);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 60360 2015-07-30 11:09 calibration\calibration\1.jpg
文件 61121 2015-07-30 11:11 calibration\calibration\10.jpg
文件 61229 2015-07-30 11:10 calibration\calibration\2.jpg
文件 61537 2015-07-30 11:10 calibration\calibration\3.jpg
文件 64177 2015-07-30 11:10 calibration\calibration\4.jpg
文件 59513 2015-07-30 11:10 calibration\calibration\5.jpg
文件 62833 2015-07-30 11:11 calibration\calibration\6.jpg
文件 77115 2015-07-30 11:11 calibration\calibration\7.jpg
文件 66128 2015-07-30 11:11 calibration\calibration\8.jpg
文件 59704 2015-07-30 11:11 calibration\calibration\9.jpg
文件 4449 2015-07-27 15:06 calibration\calibration\calibration.vcxproj
文件 941 2015-07-27 14:44 calibration\calibration\calibration.vcxproj.filters
文件 410 2015-07-27 18:06 calibration\calibration\calibration.vcxproj.user
文件 0 2015-08-31 11:53 calibration\calibration\calibration_result.txt
文件 96 2015-07-30 00:33 calibration\calibration\Debug\calibration.lastbuildstate
文件 2230 2015-07-30 00:33 calibration\calibration\Debug\calibration.log
文件 736 2015-07-30 00:33 calibration\calibration\Debug\cl.command.1.tlog
文件 15812 2015-07-30 00:33 calibration\calibration\Debug\CL.read.1.tlog
文件 516 2015-07-30 00:33 calibration\calibration\Debug\CL.write.1.tlog
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
文件 2 2015-07-30 00:33 calibration\calibration\Debug\li
............此处省略134个文件信息
- 上一篇:词法分析器
- 下一篇:单片机教学动画素材共46个
相关资源
- Adaboost人头部检测 opencv vc
- OpenCv+Ocr 图片文字识别源码
- 于老师的人脸识别VS2015工程
- opencv相机检校
- 车型识别系统vc源码opencv
- opencv依靠颜色识别和跟踪物体
- OpenCV的PCA人脸识别
- openCV+qt视频传输
- OpenCV 现实高斯金字塔的源码,非常经
- opencv运动目标检测与跟踪源代码
- labview与Opencv 人眼识别
- opencv 将两幅等宽图像拼接在一起
- 图像分类代码
- OpenCV 1.0.0 patch for ffmpeg errors
- 车辆分类检测正负样本共计1000张
- 使用Visual Studio+OpenCV进行的Susan算子边
- 跟踪特征点并画AR物体
- 别踩白块 毕业论文
- 支持OpenCV3.2的opencv_ffmpeg.7z
- openCVSharp Unity3d
- 彩色图像的SVM分割,Opencv实现
- OpenCV2.31库
- Delphi的OpenCV头文件和
- OpenCV 3 Blueprints.pdf[382页可复制]
- 基于opencv接口的深度学习人脸检测代
- 基于opencv的b样条实现
- 北京大学的OPENCV课程PPT_田永鸿
- YML保存 cvCompareHist cvCalcEMD2 直方图对比
- vgg_generated_48(6480120).i
- 基于OpenCV的图像二值化阈值可调
评论
共有 条评论