資源簡介
根據官方例程進行改變。進行三角測量的兩種方法進行三維坐標計算,非全圖三維重建,是特征點,這里使用的是棋盤格角點作為匹配點
代碼片段和文件信息
//?stereoCalibration.cpp?:?定義控制臺應用程序的入口點。
//
//在進行雙目攝像頭的標定之前,最好事先分別對兩個攝像頭進行單目視覺的標定?
//分別確定兩個攝像頭的內參矩陣,然后再開始進行雙目攝像頭的標定
//在此例程中是先對兩個攝像頭進行單獨標定(見上一篇單目標定文章),然后在進行立體標定
//#include?“stdafx.h“
#include?
#include?
#include?“cv.h“
#include?
#include?
using?namespace?std;
using?namespace?cv;
const?int?imageWidth?=?640; //攝像頭的分辨率
const?int?imageHeight?=?480;
const?int?boardWidth?=?9; //橫向的角點數目
const?int?boardHeight?=?6; //縱向的角點數據
const?int?boardCorner?=?boardWidth?*?boardHeight; //總的角點數據
const?int?frameNumber?=?13; //相機標定時需要采用的圖像幀數
const?int?squareSize?=?20; //標定板黑白格子的大小?單位mm
const?Size?boardSize?=?Size(boardWidth?boardHeight); //
Size?imageSize?=?Size(imageWidth?imageHeight);
Mat?R?T?E?F; //R?旋轉矢量?T平移矢量?E本征矩陣?F基礎矩陣
vector?rvecs; ????//旋轉向量
vector?tvecs; //平移向量
vector>?imagePointL; ????//左邊攝像機所有照片角點的坐標集合
vector>?imagePointR; //右邊攝像機所有照片角點的坐標集合
vector>?objRealPoint; //各副圖像的角點的實際物理坐標集合
vector?cornerL; //左邊攝像機某一照片角點坐標集合
vector?cornerR; //右邊攝像機某一照片角點坐標集合
Mat?rgbImageL?grayImageL;
Mat?rgbImageR?grayImageR;
Mat?Rl?Rr?Pl?Pr?Q; //校正旋轉矩陣R,投影矩陣P?重投影矩陣Q?(下面有具體的含義解釋)
Mat?mapLx?mapLy?mapRx?mapRy; //映射表
Rect?validROIL?validROIR; //圖像校正之后,會對圖像進行裁剪,這里的validROI就是指裁剪之后的區域
/*
事先標定好的左相機的內參矩陣
fx?0?cx
0?fy?cy
0?0??1
*/
Mat?cameraMatrixL;/*?=?(Mat_(3?3)?<532.782?0?532.904
0?342.505?233.876
0?0?1);*/
Mat?distCoeffL;//?=?(Mat_(5?1)?<-0.28095?0.0255745?0.00122226?-0.000137736?0.162946);
/*
事先標定好的右相機的內參矩陣
fx?0?cx
0?fy?cy
0?0??1
*/
Mat?cameraMatrixR;?/*=?(Mat_(3?3)?<532.782?0?532.904
0?342.505?233.876
0?0?1);*/
Mat?distCoeffR;//?=?(Mat_(5?1)?<-0.28095?0.0255745?0.00122226?-0.000137736?0.162946);
/*計算標定板上模塊的實際物理坐標*/
void?calRealPoint(vector>&?obj?int?boardwidth?int?boardheight?int?imgNumber?int?squaresize)
{
// Mat?imgpoint(boardheight?boardwidth?CV_32FC3Scalar(000));
vector?imgpoint;
for?(int?rowIndex?=?0;?rowIndex? {
for?(int?colIndex?=?0;?colIndex? {
// imgpoint.at(rowIndex?colIndex)?=?Vec3f(rowIndex?*?squaresize?colIndex*squaresize?0);
imgpoint.push_back(Point3f(rowIndex?*?squaresize?colIndex?*?squaresize?0));
}
}
for?(int?imgIndex?=?0;?imgIndex? {
obj.push_back(imgpoint);
}
}
void?outputCameraParam(void)
{
/*保存數據*/
/*輸出數據*/
FileStorage?fs(“intrinsics.yml“?FileStorage::WRITE);
if?(fs.isOpened())
{
fs?<“cameraMatrixL“?< fs.release();
cout?<“cameraMatrixL=:“?<
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-04-25?10:57??opencv棋盤格標定\
?????目錄???????????0??2019-04-15?10:25??opencv棋盤格標定\.vs\
?????目錄???????????0??2019-04-15?10:25??opencv棋盤格標定\.vs\Project1\
?????目錄???????????0??2019-04-15?10:25??opencv棋盤格標定\.vs\Project1\v14\
?????文件???????42496??2019-04-25?10:57??opencv棋盤格標定\.vs\Project1\v14\.suo
?????目錄???????????0??2019-04-25?10:57??opencv棋盤格標定\Debug\
?????目錄???????????0??2019-04-25?10:56??opencv棋盤格標定\Project1\
?????文件??????????60??2015-07-06?21:54??opencv棋盤格標定\Project1\ClassDiagram.cd
?????文件????????6124??2019-04-17?21:01??opencv棋盤格標定\Project1\Project1.vcxproj
?????文件????????1015??2019-04-17?21:01??opencv棋盤格標定\Project1\Project1.vcxproj.filters
?????目錄???????????0??2019-04-15?13:31??opencv棋盤格標定\Project1\calib\
?????文件???????13126??2019-04-15?13:31??opencv棋盤格標定\Project1\calib\1.jpg
?????文件?????1311798??2018-03-23?16:39??opencv棋盤格標定\Project1\calib\L5.bmp
?????文件?????1311798??2018-03-23?16:39??opencv棋盤格標定\Project1\calib\L7.bmp
?????文件?????1311798??2018-03-23?16:39??opencv棋盤格標定\Project1\calib\L9.bmp
?????文件?????1311798??2018-03-23?16:39??opencv棋盤格標定\Project1\calib\R5.bmp
?????文件?????1311798??2018-03-23?16:39??opencv棋盤格標定\Project1\calib\R7.bmp
?????文件?????1311798??2018-03-23?16:39??opencv棋盤格標定\Project1\calib\R9.bmp
?????文件????????1795??2019-04-25?10:56??opencv棋盤格標定\Project1\extrinsics.yml
?????文件?????????863??2019-04-25?10:56??opencv棋盤格標定\Project1\intrinsics.yml
?????文件?????????742??2018-11-19?20:12??opencv棋盤格標定\Project1\opencv.props
?????文件????????1407??2019-04-25?10:56??opencv棋盤格標定\Project1\point3d.txt
?????目錄???????????0??2019-04-15?11:25??opencv棋盤格標定\Project1\x64\
?????目錄???????????0??2019-04-25?10:56??opencv棋盤格標定\Project1\x64\Debug\
?????文件????????1020??2019-04-25?10:56??opencv棋盤格標定\Project1\x64\Debug\Project1.Build.CppClean.log
?????文件????????1625??2019-04-25?10:56??opencv棋盤格標定\Project1\x64\Debug\Project1.log
?????目錄???????????0??2019-04-25?10:56??opencv棋盤格標定\Project1\x64\Debug\Project1.tlog\
?????文件?????????542??2019-04-25?10:56??opencv棋盤格標定\Project1\x64\Debug\Project1.tlog\CL.command.1.tlog
?????文件???????31664??2019-04-25?10:56??opencv棋盤格標定\Project1\x64\Debug\Project1.tlog\CL.read.1.tlog
?????文件?????????496??2019-04-25?10:56??opencv棋盤格標定\Project1\x64\Debug\Project1.tlog\CL.write.1.tlog
?????文件?????????177??2019-04-25?10:56??opencv棋盤格標定\Project1\x64\Debug\Project1.tlog\Project1.lastbuildstate
............此處省略15個文件信息
- 上一篇:2019王道計算機網絡高清完整版帶書簽!
- 下一篇:智能垃圾分類.zip
評論
共有 條評論