资源简介
使用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个
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- 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多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
评论
共有 条评论