-
大小: 4.24MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-10-28
- 語言: 其他
- 標(biāo)簽: 相機(jī)標(biāo)定??OpenCV??
資源簡介
使用OpenCV中的calibrateCamera函數(shù)進(jìn)行張正友相機(jī)標(biāo)定,得到相機(jī)內(nèi)參矩陣。

代碼片段和文件信息
#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()
{?
????/************************************************************************??
???????????從攝像機(jī)中讀取多幅圖像從中提取出角點(diǎn),然后對(duì)角點(diǎn)進(jìn)行亞像素精確化?
????*************************************************************************/?
int?image_count=??10;????????????????????/****????圖像數(shù)量?????****/??
Mat?frame;
Size?image_size;?????????????????????????/****?????圖像的尺寸??????****/???
Size?board_size?=?Size(96);????????????/****????定標(biāo)板上每行、列的角點(diǎn)數(shù)???????****/??
vector?corners;??????????????????/****????緩存每幅圖像上檢測(cè)到的角點(diǎn)???????****/
vector>??corners_Seq;????/****??保存檢測(cè)到的所有角點(diǎn)???????****/???
ofstream?fout(“calibration_result.txt“);??/**????保存定標(biāo)結(jié)果的文件?????**/
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? {
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();
/*?提取角點(diǎn)?*/???
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);
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????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個(gè)文件信息
評(píng)論
共有 條評(píng)論