OpenCV3中相機標定介面

2021-10-11 02:19:00 字數 4026 閱讀 5785

2 標定

3 矯正

\\ 將n維向量轉化為n+

1維向量,最後一維新增1

void cv::

convertpointstohomogeneous

( cv::inputarray src,

cv::outputarray dst

)

// 將n維向量轉化維n-1維向量,除以最後1維

void cv::

convertpointsfromhomogeneous

( cv::inputarray src,

cv::outputarray dst

)

// 用於實現旋轉矩陣和旋轉向量之間的轉換

void cv::

rodrigues

( cv::inputarray src,

cv::outputarray dst,

cv::outputarray jacobian = cv::

noarray()

)

/* 

image: 必須是8位元影象;

patternsize: 表示棋盤的每行每列有多少角點(內角點數);

corners: 用畫素座標來表示角點位置的輸出矩陣

*/bool cv::

findchessboardcorners

( cv::inputarray image,

cv::size patternsize,

cv::outputarray corners,

int flags = cv::calib_cb_adaptive_thresh | cv::calib_cb_normalize_image

);

標誌

意義cv::calib_cb_adaptive_thresh

自適應閾值化

cv::calib_cb_normalize_image

閾值化之前的歸一化操作

cv::calib_cb_filter_quads

從黑色方塊找角點

cv::calib_cb_fast_check

快速掃瞄確定影象中存在角點

/*

image: 必須是8位彩色影象

patternwasfound: 表示是否整個棋盤圖案上的角點都被成功找到

*/void cv::

drawchessboardcorners

( cv::inputoutputarray image,

cv::size patternsize,

cv::inputarray corners,

bool patternwasfound

);

/* 

image: 必須是8位元影象;

flags: 告訴函式如何排列圓圈,有對稱和非對稱排列兩種。當為非對稱排列時,行列數計算方式不同

*/bool cv::

findcirclesgrid

( cv::inputarray image,

cv::size patternsize,

cv::outputarray centers,

int flags = cv::calib_cb_symmetric_grid,

const cv::ptr

& blobdetector =

new******blobdetector()

);

/*

srcpoints和dstpoints必須是nx2的cv_32fc1、nx1的cv_32fc2的矩陣或cv::point2f的stl vector物件;

method: cv::default, cv::ransac, cv::lmeds

*/cv::mat cv::

findhomography

( cv::inputarray srcpoints,

cv::inputarray dstpoints,

int method =0,

double ransacreprojectthreshold =3,

cv::outputarray mask = cv::noarray

)

double cv::

calibratecamera

( cv::inputarrayofarrays objectpoints,

cv::inputarrayofarrays imagepoints,

cv::inputoutputarray cameramatrix,

cv::inputoutputarray distcoeffs,

cv::outputarrayofarrays rvecs,

cv::outputarrayofarrays tvecs,

int flags =0,

cv::termcriteria criteria = cv::

termcriteria

( cv::termcriteria::count | cv::termcriteria::eps,30,

dbl_epsilon ))

;

void cv::

initundistortrectifymap

( cv::inputarray cameramatrix,

cv::inputarray distcoeffs,

cv::inputarray r,

cv::inputarray newcameramatrix,

cv::size size,

int m1type,

cv::outputarray map1,

cv::outputarray map2

)

cv::

remap

()

void cv::

undistort

( cv::inputarray src,

cv::outputarray dst,

cv::inputarray cameramatrix,

cv::inputarray distcoeffs,

cv::inputarray newcameramatrix = cv::

noaarray()

)

void cv::

undistortpoints

( cv::inputarray src,

cv::outputarray dst,

cv::inputarray cameramatrix,

cv::inputarray distcoeffs,

cv::inputarray r = cv::

noaarray()

cv::inputarray p = cv::

noaarray()

)

void cv::

convertmaps

( cv::inputarray map1,

cv::inputarray map2,

cv::outputarray dstmap1,

cv::outputarray dstmap2,

int dstmap1type,

bool nninterpolation =

false

)

OpenCV相機標定

include include include include 標頭檔案 include using namespace cv 包含cv命名空間 using namespace std 棋盤標靶中每塊的寬和高 int g height 100 int g width 100 int g innerh...

相機標定 OpenCV

使用opencv標定的好處 會自動生成乙個.xml檔案,方便使用。即換不同相機時候只用換這個檔案,而不需要改變 作業系統 ubuntu16.04 opencv版本 3.4.6 攝像頭 電腦自帶攝像頭 標定步驟 1 找到標定例程 進入opencv安裝目錄,找到samples cpp tutorial ...

OpenCV 相機標定(演算法)

include include include include include include include include include using namespace cv using namespace std int main 提取角點 if 0 findchessboardcorner...