99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

相機校準(zhǔn)與方形棋盤

2018-10-07 09:49 更新

本教程的目標(biāo)是學(xué)習(xí)如何校準(zhǔn)一個已經(jīng)給定一套棋盤圖像的相機。

測試數(shù)據(jù):使用數(shù)據(jù)/象棋文件夾中的圖像。

  • 通過在cmake配置中將BUILD_EXAMPLES設(shè)置為ON,用OpenCV編譯樣本。
  • 轉(zhuǎn)到bin文件夾,并使用imagelist_creator創(chuàng)建圖像的XML / YAML列表。
  • 然后,運行校準(zhǔn)樣品以獲取相機參數(shù)。使用方形尺寸等于3cm。

Pose 預(yù)估

現(xiàn)在,讓我們編寫檢測圖像中棋盤的代碼,并找到與相機的距離。您可以將此方法應(yīng)用于具有已知3D幾何的任何對象; 您在圖像中檢測到。

測試數(shù)據(jù):使用您的數(shù)據(jù)文件夾中的chess_test * .jpg圖像。

  • 創(chuàng)建一個空的控制臺項目。加載測試圖像:

Mat img = imread(argv [1],IMREAD_GRAYSCALE);

  • 使用findChessboard功能檢測此圖像中的棋盤:

bool found = findChessboardCorners(img,boardSize,ptvec,CALIB_CB_ADAPTIVE_THRESH);
  • 現(xiàn)在,在任何坐標(biāo)系中編寫一個生成棋盤的3d坐標(biāo)矢量<Point3f>數(shù)組的函數(shù)。為了簡單起見,我們選擇一個系統(tǒng),使得棋盤角中的一個位于原點,而棋盤在平面z = 0
  • 從XML / YAML文件讀取相機參數(shù):
FileStorage fs( filename, FileStorage::READ );
Mat intrinsics, distortion;
fs["camera_matrix"] >> intrinsics;
fs["distortion_coefficients"] >> distortion;

  • 現(xiàn)在我們準(zhǔn)備通過運行`solvePnP`來找到棋盤姿勢了

vector<Point3f> boardPoints;
// fill the array
...

solvePnP(Mat(boardPoints), Mat(foundBoardCorners), cameraMatrix,
                     distCoeffs, rvec, tvec, false);
  • 計算重新投影錯誤,就像在校準(zhǔn)樣品中一樣(參見opencv / samples / cpp / calibration.cpp,函數(shù)computeReprojectionErrors)。

問題:你如何計算從相機原點到任何一個角落的距離?答:由于我們的形象在于3D空間,首先我們將計算出相對攝像機的姿勢。這將給我們3D到2D通信。接下來,我們可以應(yīng)用一個簡單的L2范數(shù)來計算任何點(拐點的終點)之間的距離。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號