資源簡介
張正友相機(jī)標(biāo)定Opencv實(shí)現(xiàn),附棋盤圖和14張不同角度標(biāo)定圖。 包含完整的工程代碼,有詳細(xì)的注釋說明,一鍵運(yùn)行。實(shí)現(xiàn)了相機(jī)標(biāo)定、輸出相機(jī)內(nèi)參、外參、旋轉(zhuǎn)和平移矩陣、標(biāo)定效果評(píng)價(jià)、以及使用標(biāo)定結(jié)果對(duì)原始棋盤圖進(jìn)行矯正。
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?cv;
using?namespace?std;
int?main(int?argcchar*?argv[])
{
ifstream?fin(“calibdata.txt“);//標(biāo)定所用圖文件路徑
ofstream?fout(“caliberation_result.txt“);//保存標(biāo)定結(jié)果的文件
//讀取每一幅圖像,從中提取角點(diǎn),然后對(duì)角點(diǎn)進(jìn)行亞像素精確化
cout<<“開始提取角點(diǎn)......“;//圖片數(shù)量
int?image_count?=?0;
Size?image_size;//圖片尺寸
Size?board_size?=?Size(46);//標(biāo)定板上每行、每列的角點(diǎn)數(shù)
vector?image_points_buf;//緩存每幅圖像上檢測到的角點(diǎn)
vector>?image_points_seq;//保存檢測到的所有角點(diǎn)
string?filename;
int?count?=?-1;//用于存儲(chǔ)角點(diǎn)數(shù)
while(getline(finfilename))
{
image_count++;
//用于觀察檢測輸出
cout<<“image_count?=?“< //輸出檢驗(yàn)
cout<<“-->count?==?1“< Mat?imageInput?=?imread(filename);
if(image_count?==?1)
{
image_size.width?=?imageInput.cols;
image_size.height?=?imageInput.rows;
cout<<“image_size.width?=?“< cout<<“image_size.height?=?“< }
//提取角點(diǎn)
if(0?==?findChessboardCorners(imageInputboard_sizeimage_points_buf))
{
cout<<“can?not?find?chessboard?corners!\n“;
exit(1);
}
else
{
Mat?view_gray;
cvtColor(imageInputview_grayCV_BGR2GRAY);
find4QuadCornerSubpix(view_grayimage_points_bufSize(55));//亞像素精確化
image_points_seq.push_back(image_points_buf);//保存亞像素點(diǎn)
//圖像上顯示角點(diǎn)位置
drawChessboardCorners(view_grayboard_sizeimage_points_buffalse);
imshow(“Canmera?Calibration“view_gray);
waitKey(500);
}
}
int?total?=?image_points_seq.size();
cout<<“total?=?“< int?CornerNum?=?board_size.width*board_size.height;//每張圖片上總的角點(diǎn)數(shù)
for(int?ii=0;ii {
if(0?==?ii%CornerNum)
{
int?i?=?-1;
i?=?ii?/?CornerNum;
int?j?=?i?+?i;
cout<<“-->第“<:?“< }
if(0?==?ii?%?3)
{
cout< }
else
{
cout.width(10);
}
cout<<“?-->“< cout<<“?-->“< }
cout<<“\n角點(diǎn)提取完成!\n“;
//以下是攝像機(jī)標(biāo)定
cout<<“開始標(biāo)定.....“< //棋盤三維信息
Size?square_size?=?Size(1010);//實(shí)際測量得到的標(biāo)定板上每個(gè)棋盤格的大小
vector>?object_points;
//內(nèi)外參數(shù)
Mat?cameraMatrix?=?Mat(33CV_32FC1Scalar::all(0));//相機(jī)內(nèi)參
vector?point_counts;//每幅圖像中角點(diǎn)的數(shù)量
Mat?distCoeffs?=?Mat(15CV_32FC1Scalar::all(0));//攝像機(jī)的5個(gè)畸變系數(shù)k1k2p1p2k3
vector?tvecsMat;//每幅圖像的旋轉(zhuǎn)向量
vector?rvecsMat;//每幅圖像的平移向量
//初始化標(biāo)定板上角點(diǎn)的三維坐標(biāo)
int?ijt;
for(t=0;t {
vector?tempPointSet;
for(i=0;i {
for(j=0;j {
Point3f?realPoint;
//假設(shè)標(biāo)定板放在世界坐標(biāo)系中Z=0的平面上
realPoint.x?=?i*square_size.width;
realPoint.y?=?j*square_size.height;
realPoint.z?=?0;
tempPointSet.push_back(realPoint);
}
}
object_points.push_back(tempPointSet);
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????89499??2018-08-09?17:10??CameraCalibration\CameraCalibration\10_d.jpg
?????文件??????99662??2018-08-09?17:10??CameraCalibration\CameraCalibration\11_d.jpg
?????文件?????119179??2018-08-09?17:10??CameraCalibration\CameraCalibration\12_d.jpg
?????文件?????112344??2018-08-09?17:10??CameraCalibration\CameraCalibration\13_d.jpg
?????文件?????121183??2018-08-09?17:10??CameraCalibration\CameraCalibration\14_d.jpg
?????文件??????98952??2018-08-09?17:10??CameraCalibration\CameraCalibration\1_d.jpg
?????文件??????99438??2018-08-09?17:10??CameraCalibration\CameraCalibration\2_d.jpg
?????文件?????108344??2018-08-09?17:10??CameraCalibration\CameraCalibration\3_d.jpg
?????文件?????113297??2018-08-09?17:10??CameraCalibration\CameraCalibration\4_d.jpg
?????文件?????114645??2018-08-09?17:10??CameraCalibration\CameraCalibration\5_d.jpg
?????文件?????119171??2018-08-09?17:10??CameraCalibration\CameraCalibration\6_d.jpg
?????文件?????101709??2018-08-09?17:10??CameraCalibration\CameraCalibration\7_d.jpg
?????文件?????107642??2018-08-09?17:10??CameraCalibration\CameraCalibration\8_d.jpg
?????文件??????89253??2018-08-09?17:10??CameraCalibration\CameraCalibration\9_d.jpg
?????文件????????171??2016-10-26?00:26??CameraCalibration\CameraCalibration\calibdata.txt
?????文件???????6416??2018-08-09?17:10??CameraCalibration\CameraCalibration\caliberation_result.txt
?????文件???????6583??2018-08-09?17:09??CameraCalibration\CameraCalibration\Calibration.cpp
?????文件???????3934??2018-08-08?19:14??CameraCalibration\CameraCalibration\CameraCalibration.vcxproj
?????文件????????949??2018-08-08?19:14??CameraCalibration\CameraCalibration\CameraCalibration.vcxproj.filters
?????文件????????143??2018-08-08?16:38??CameraCalibration\CameraCalibration\CameraCalibration.vcxproj.user
?????文件?????921654??2009-12-31?16:23??CameraCalibration\CameraCalibration\chess1.bmp
?????文件?????921654??2009-12-31?16:21??CameraCalibration\CameraCalibration\chess10.bmp
?????文件?????921654??2009-12-31?16:22??CameraCalibration\CameraCalibration\chess11.bmp
?????文件?????921654??2009-12-31?16:22??CameraCalibration\CameraCalibration\chess12.bmp
?????文件?????921654??2009-12-31?16:22??CameraCalibration\CameraCalibration\chess13.bmp
?????文件?????921654??2009-12-31?16:22??CameraCalibration\CameraCalibration\chess14.bmp
?????文件?????921654??2009-12-31?16:24??CameraCalibration\CameraCalibration\chess2.bmp
?????文件?????921654??2009-12-31?16:24??CameraCalibration\CameraCalibration\chess3.bmp
?????文件?????921654??2009-12-31?16:24??CameraCalibration\CameraCalibration\chess4.bmp
?????文件?????921654??2009-12-31?16:23??CameraCalibration\CameraCalibration\chess5.bmp
............此處省略40個(gè)文件信息
評(píng)論
共有 條評(píng)論