資源簡(jiǎn)介
CircleCalib.rar
代碼片段和文件信息
#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;
void?main()
{
ifstream?fin(“calibdata_G.txt“);?/*?標(biāo)定所用圖像文件的路徑?*/
ofstream?fout(“caliberation_result.txt“);??/*?保存標(biāo)定結(jié)果的文件?*/
???//讀取每一幅圖像,從中提取出角點(diǎn),然后對(duì)角點(diǎn)進(jìn)行亞像素精確化
cout?<“開(kāi)始提取角點(diǎn)………………“;
int?image_count?=?0;??/*?圖像數(shù)量?*/
Size?image_size;??/*?圖像的尺寸?*/
Size?board_size?=?Size(77);????/*?標(biāo)定板上每行、列的角點(diǎn)數(shù)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。需要改?*/
vector?image_points_buf;??/*?緩存每幅圖像上檢測(cè)到的角點(diǎn)?*/
vector>?image_points_seq;?/*?保存檢測(cè)到的所有角點(diǎn)?*/
string?filename;
int?count?=?-1;//用于存儲(chǔ)角點(diǎn)個(gè)數(shù)。
while?(getline(fin?filename))
{
image_count++;
//?用于觀察檢驗(yàn)輸出
cout?<“image_count?=?“?< /*?輸出檢驗(yàn)*/
cout?<“-->count?=?“?< Mat?imageInput?=?imread(filename);
if?(image_count?==?1)??//讀入第一張圖片時(shí)獲取圖像寬高信息
{
image_size.width?=?imageInput.cols;
image_size.height?=?imageInput.rows;
cout?<“image_size.width?=?“?< cout?<“image_size.height?=?“?< }
/*?提取角點(diǎn)?*/
if?(0?!=?findChessboardCorners(imageInput?board_size?image_points_buf))
{
cout?<“can?not?find?chessboard?corners!\n“;?//找不到角點(diǎn)
exit(1);
}
else
{
Mat?view_gray;
cvtColor(imageInput?view_gray?CV_RGB2GRAY);
/*?亞像素精確化?*/
//find4QuadCornerSubpix(view_gray?image_points_buf?Size(5?5));?//對(duì)粗提取的角點(diǎn)進(jìn)行精確化
cv::SimpleBlobDetector::Params?param;
param.filterByCircularity?=?true;
param.minCircularity?=?0.8f;
param.maxCircularity?=?1.0f;
cv::Ptr?blobDetector?=?cv::SimpleBlobDetector::create(param);
cv::Size?boardSize?=?cv::Size(7?7);//.................................................................................................................需要改
bool?found?=?findCirclesGrid(view_gray?boardSize?image_points_buf?cv::CALIB_CB_SYMMETRIC_GRID?|?cv::CALIB_CB_CLUSTERING?blobDetector);
image_points_seq.push_back(image_points_buf);??//保存亞像素角點(diǎn)
???/*?在圖像上顯示角點(diǎn)位置?*/
drawChessboardCorners(view_gray?board_size?image_points_buf?true);?//用于在圖片中標(biāo)記角點(diǎn)
namedWindow(“Camera?Calibration“0);
imshow(“Camera?Calibration“?view_gray);//顯示圖片
waitKey(500);//暫停0.5S
}
}
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)//?24?是每幅圖片的角點(diǎn)個(gè)數(shù)。此判斷語(yǔ)句是為了輸出?圖片號(hào),便于控制臺(tái)觀看?
{
int?i?=?-1;
i?=?ii?/?CornerNum;
int?j?=?i?+?1;
cout?<“-->?第?“?<?:?“?< }
if?(0?==?ii?%?3) //?此判斷語(yǔ)句,格式化輸出,便于控制臺(tái)查看
{
cout?< }
else
{
cout.width(10);
}
//輸出所有的角點(diǎn)
cout?<“?-->“?< cout?<
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????..A..H.?????40960??2018-10-22?13:24??CircleCalib\.vs\DotFitting\v14\.suo
?????文件?????740105??2018-10-22?13:13??CircleCalib\DotFitting\1_d.jpg
?????文件?????679136??2018-10-22?13:13??CircleCalib\DotFitting\2_d.jpg
?????文件?????702128??2018-10-22?13:13??CircleCalib\DotFitting\3_d.jpg
?????文件?????682442??2018-10-22?13:13??CircleCalib\DotFitting\4_d.jpg
?????文件?????688486??2018-10-22?13:13??CircleCalib\DotFitting\5_d.jpg
?????文件?????681585??2018-10-22?13:13??CircleCalib\DotFitting\6_d.jpg
?????文件?????722943??2018-10-22?13:13??CircleCalib\DotFitting\7_d.jpg
?????文件?????????63??2018-10-22?10:30??CircleCalib\DotFitting\calibdata_G.txt
?????文件???????3274??2018-10-22?13:13??CircleCalib\DotFitting\caliberation_result.txt
?????文件???????9366??2018-10-22?10:32??CircleCalib\DotFitting\CircleCalib.cpp
?????文件???????7699??2018-10-22?10:22??CircleCalib\DotFitting\DotFitting.vcxproj
?????文件????????952??2018-10-22?10:22??CircleCalib\DotFitting\DotFitting.vcxproj.filters
?????文件????????223??2018-10-22?10:22??CircleCalib\DotFitting\DotFitting.vcxproj.user
?????文件?????416817??2018-10-21?16:54??CircleCalib\DotFitting\G_1.jpg
?????文件?????372028??2018-10-21?16:54??CircleCalib\DotFitting\G_2.jpg
?????文件?????389877??2018-10-21?16:54??CircleCalib\DotFitting\G_3.jpg
?????文件?????371512??2018-10-21?16:54??CircleCalib\DotFitting\G_4.jpg
?????文件?????381058??2018-10-21?16:54??CircleCalib\DotFitting\G_5.jpg
?????文件?????377537??2018-10-21?16:54??CircleCalib\DotFitting\G_6.jpg
?????文件?????401167??2018-10-21?16:54??CircleCalib\DotFitting\G_7.jpg
?????文件????1934651??2018-10-22?10:32??CircleCalib\DotFitting\x64\Release\CircleCalib.obj
?????文件???????1582??2018-10-22?10:22??CircleCalib\DotFitting\x64\Release\DotFitting.Build.CppClean.log
?????文件???????1043??2018-10-22?10:32??CircleCalib\DotFitting\x64\Release\DotFitting.log
?????文件????????734??2018-10-22?10:32??CircleCalib\DotFitting\x64\Release\DotFitting.tlog\CL.command.1.tlog
?????文件??????18982??2018-10-22?10:32??CircleCalib\DotFitting\x64\Release\DotFitting.tlog\CL.read.1.tlog
?????文件????????502??2018-10-22?10:32??CircleCalib\DotFitting\x64\Release\DotFitting.tlog\CL.write.1.tlog
?????文件????????225??2018-10-22?10:32??CircleCalib\DotFitting\x64\Release\DotFitting.tlog\DotFitting.lastbuildstate
?????文件???????1480??2018-10-22?10:32??CircleCalib\DotFitting\x64\Release\DotFitting.tlog\li
?????文件???????3734??2018-10-22?10:32??CircleCalib\DotFitting\x64\Release\DotFitting.tlog\li
............此處省略27個(gè)文件信息
評(píng)論
共有 條評(píng)論