• 大小: 4.24MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-28
  • 语言: 其他
  • 标签: 相机标定  OpenCV  

资源简介

使用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\link-cvtres.read.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link-cvtres.write.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link-rc.read.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link-rc.write.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link.10904-cvtres.read.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link.10904-cvtres.write.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link.10904-rc.read.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link.10904-rc.write.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link.10904.read.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link.10904.write.1.tlog

     文件          2  2015-07-30 00:33  calibration\calibration\Debug\link.11096-cvtres.read.1.tlog

............此处省略134个文件信息

评论

共有 条评论