資源簡介
張正友相機標定Opencv實現,附棋盤圖和14張不同角度標定圖。 包含完整的工程代碼,有詳細的注釋說明,一鍵運行。實現了相機標定、輸出相機內參、外參、旋轉和平移矩陣、標定效果評價、以及使用標定結果對原始棋盤圖進行矯正。
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?cv;
using?namespace?std;
int?main(int?argcchar*?argv[])
{
ifstream?fin(“calibdata.txt“);//標定所用圖文件路徑
ofstream?fout(“caliberation_result.txt“);//保存標定結果的文件
//讀取每一幅圖像,從中提取角點,然后對角點進行亞像素精確化
cout<<“開始提取角點......“;//圖片數量
int?image_count?=?0;
Size?image_size;//圖片尺寸
Size?board_size?=?Size(46);//標定板上每行、每列的角點數
vector?image_points_buf;//緩存每幅圖像上檢測到的角點
vector>?image_points_seq;//保存檢測到的所有角點
string?filename;
int?count?=?-1;//用于存儲角點數
while(getline(finfilename))
{
image_count++;
//用于觀察檢測輸出
cout<<“image_count?=?“< //輸出檢驗
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?=?“< }
//提取角點
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);//保存亞像素點
//圖像上顯示角點位置
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;//每張圖片上總的角點數
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角點提取完成!\n“;
//以下是攝像機標定
cout<<“開始標定.....“< //棋盤三維信息
Size?square_size?=?Size(1010);//實際測量得到的標定板上每個棋盤格的大小
vector>?object_points;
//內外參數
Mat?cameraMatrix?=?Mat(33CV_32FC1Scalar::all(0));//相機內參
vector?point_counts;//每幅圖像中角點的數量
Mat?distCoeffs?=?Mat(15CV_32FC1Scalar::all(0));//攝像機的5個畸變系數k1k2p1p2k3
vector?tvecsMat;//每幅圖像的旋轉向量
vector?rvecsMat;//每幅圖像的平移向量
//初始化標定板上角點的三維坐標
int?ijt;
for(t=0;t {
vector?tempPointSet;
for(i=0;i {
for(j=0;j {
Point3f?realPoint;
//假設標定板放在世界坐標系中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);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????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個文件信息
- 上一篇:大數據及其在稅務中的應用
- 下一篇:硬件工程師筆試試題集錦(均有參考答案)
評論
共有 條評論