-
大小: 14.15MB文件類型: .rar金幣: 1下載: 0 次發(fā)布日期: 2023-07-20
- 語言: 其他
- 標(biāo)簽: opencv??相機(jī)標(biāo)定??源碼??
資源簡介
opencv相機(jī)標(biāo)定源代碼,運(yùn)行環(huán)境win10-64bit,opencv版本3.3.0,vs2013,包含標(biāo)定棋盤格打印電子照片,攝像機(jī)拍攝的15張棋盤格照片,運(yùn)行結(jié)果,畸形校正照片結(jié)果,搭好環(huán)境代碼可直接運(yùn)行
代碼片段和文件信息
#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.txt“);?/*?標(biāo)定所用圖像文件的路徑?*/
ofstream?fout(“caliberation_result.txt“);??/*?保存標(biāo)定結(jié)果的文件?*/
//讀取每一幅圖像,從中提取出角點(diǎn),然后對(duì)角點(diǎn)進(jìn)行亞像素精確化
cout?<“開始提取角點(diǎn)………………“;
int?image_count?=?0;??/*?圖像數(shù)量?*/
Size?image_size;??/*?圖像的尺寸?*/
Size?board_size?=?Size(6?9);????/*?標(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)個(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(11?11));?//對(duì)粗提取的角點(diǎn)進(jìn)行精確化
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)
imshow(“Camera?Calibration“?view_gray);//顯示圖片
//自己添加保存提取角點(diǎn)的照片
imwrite(“cb_pic/Calibration_“?+?filename?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ù)。此判斷語句是為了輸出?圖片號(hào),便于控制臺(tái)觀看?
{
int?i?=?-1;
i?=?ii?/?CornerNum;
int?j?=?i?+?1;
cout?<“-->?第?“?<?:?“?< }
if?(0?==?ii?%?3) //?此判斷語句,格式化輸出,便于控制臺(tái)查看
{
cout?< }
else
{
cout.width(10);
}
//輸出所有的角點(diǎn)
cout?<“?-->“?< cout?<“?-->“?< }
cout?<“角點(diǎn)提取完成!\n“;
//以下是攝像機(jī)標(biāo)定
cout?<“開始標(biāo)定………………“;
/*棋盤三維信息*/
//Size?square_size?=?Size(10?10);??/*?實(shí)際測量得到的標(biāo)定板上每個(gè)棋盤格的大小?*/
Size?square_size?=?Size(26?26);
vector>?object_points;?/*?保存標(biāo)定板上角點(diǎn)的三維坐標(biāo)?*/
/*內(nèi)外參數(shù)*/
Mat?cameraMatrix?=?Mat(3?3?CV_32FC1?Scalar::all(0));?/*?攝像機(jī)內(nèi)參數(shù)矩陣?*/
vector?point_counts;??//?每幅圖像中角點(diǎn)的數(shù)量
Mat?distCoeffs?=?Mat(1?5?CV_32FC1?Scalar::all(0));?/*?攝像機(jī)的5個(gè)畸變系數(shù):k1k2p1p2k3?*/
vector?tvecsMat;??/*?每幅圖像的旋轉(zhuǎn)向量?*/
vector?rvecsMat;?/*?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????212434??2019-07-05?14:23??Calibration\1.jpg
?????文件?????250765??2019-07-05?14:23??Calibration\10.jpg
?????文件?????235912??2019-07-10?10:45??Calibration\10_校正.jpg
?????文件?????224771??2019-07-05?14:23??Calibration\11.jpg
?????文件?????215467??2019-07-10?10:45??Calibration\11_校正.jpg
?????文件?????253044??2019-07-05?14:23??Calibration\12.jpg
?????文件?????239320??2019-07-10?10:45??Calibration\12_校正.jpg
?????文件?????218550??2019-07-05?14:23??Calibration\13.jpg
?????文件?????205101??2019-07-10?10:45??Calibration\13_校正.jpg
?????文件?????215840??2019-07-05?14:23??Calibration\14.jpg
?????文件?????206924??2019-07-10?10:45??Calibration\14_校正.jpg
?????文件?????223100??2019-07-05?14:23??Calibration\15.jpg
?????文件?????210799??2019-07-10?10:45??Calibration\15_校正.jpg
?????文件?????484239??2019-06-06?15:43??Calibration\16.jpg
?????文件?????678586??2019-07-10?10:45??Calibration\16_校正.jpg
?????文件?????670487??2019-06-11?15:41??Calibration\17.jpg
?????文件?????716825??2019-07-10?10:45??Calibration\17_校正.jpg
?????文件?????934858??2019-06-03?15:50??Calibration\18.jpg
?????文件?????807715??2019-07-10?10:45??Calibration\18_校正.jpg
?????文件?????205805??2019-07-10?10:45??Calibration\1_校正.jpg
?????文件?????233785??2019-07-05?14:23??Calibration\2.jpg
?????文件?????222642??2019-07-10?10:45??Calibration\2_校正.jpg
?????文件?????223100??2019-07-05?14:23??Calibration\3.jpg
?????文件?????210799??2019-07-10?10:45??Calibration\3_校正.jpg
?????文件?????238069??2019-07-05?14:23??Calibration\4.jpg
?????文件?????224777??2019-07-10?10:45??Calibration\4_校正.jpg
?????文件?????233625??2019-07-05?14:23??Calibration\5.jpg
?????文件?????221753??2019-07-10?10:45??Calibration\5_校正.jpg
?????文件?????211635??2019-07-05?14:23??Calibration\6.jpg
?????文件?????200055??2019-07-10?10:45??Calibration\6_校正.jpg
............此處省略50個(gè)文件信息
評(píng)論
共有 條評(píng)論