檔案準備:
執行結果:
《opencv4快速入門》中的執行結果:
附上例**:
#include
#include
#include
#include
using
namespace std;
using
namespace cv;
//檢測棋盤格內角點在影象中座標的函式
void
getimgspoints
(vector imgs, vector>
&points, size boardsize)
}int
main()
imgls.
push_back
(imgl)
; imgrs.
push_back
(imgr);}
//提取棋盤格內角點在兩個相機影象中的座標
size board_size =
size(9
,6);
//方格標定板內角點數目(行,列)
vector> imglspoints;
vector> imgrspoints;
getimgspoints
(imgls, imglspoints, board_size)
;//呼叫子函式
getimgspoints
(imgrs, imgrspoints, board_size)
;//呼叫子函式
//生成棋盤格每個內角點的空間三維座標
size squaresize =
size(10
,10);
//棋盤格每個方格的真實尺寸
vector> objectpoints;
for(
int i =
0; i < imglspoints.
size()
; i++)}
objectpoints.
push_back
(temppointset);}
//影象尺寸
size imagesize;
imagesize.width = imgls[0]
.cols;
imagesize.height = imgls[0]
.rows;
mat matrix1, dist1, matrix2, dist2, rvecs, tvecs;
calibratecamera
(objectpoints, imglspoints, imagesize, matrix1, dist1, rvecs, tvecs,0)
;calibratecamera
(objectpoints, imgrspoints, imagesize, matrix2, dist2, rvecs, tvecs,0)
;//進行標定
mat r, t, e, f;
//旋轉矩陣、平移向量、本徵矩陣、基本矩陣
stereocalibrate
(objectpoints, imglspoints, imgrspoints, matrix1, dist1, matrix2, dist2, imagesize, r, t, e, f, calib_use_intrinsic_guess)
; cout <<
"兩個相機座標系的旋轉矩陣:"
<< endl << r << endl;
cout <<
"兩個相機座標系的平移向量:"
<< endl << t << endl;
waitkey(0
);return0;
}
每日一練day 1
1 關鍵字static 的作用?static關鍵字至少有下列n個作用 1 設定變數的儲存域,函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值 2 限制變數的作用域,在模組內的static全域性變數可以被模組內所用函式訪問...
OpenCV4每日一練day9 單目相機標定
準備檔案 執行 gif 最終標定結果 附 include include include include using namespace std using namespace cv intmain size board size size 9 6 方格標定板內角點數目 行,列 vector img...
OpenCV4每日一練day11 單目位姿估計
根據相機成像模型,如果已知相機的內參矩陣 世界座標系中若干空間點的三維座標和空間點在影象中投影的二維座標,那麼可以計算出世界座標系到相機座標系的旋轉向量和平移向量。如圖所示,當知道點ci在世界座標系下的三維座標和這些點在影象中對應點的二維座標時,結合相機的內參矩陣和畸變係數,就可以計算出世界座標系變...