undistortPoints()函式用法總結

2021-07-24 03:21:47 字數 2514 閱讀 2238

函式呼叫:c++: void undistortpoints(inputarray src, outputarray dst, inputarray cameramatrix, inputarray distcoeffs, inputarrayr=noarray(), inputarray p=noarray())

引數說明:

特別說明:

實現功能:通過旋轉平移變換,將觀察點轉換到理想的點座標下。

用法舉例:

bool corealgorithm::findpntswithtagvstrong(vector

¢erpnt, vector

& longaxisradius, vector

& tagpnts, float &firstfeaturelength, const

double gamma, mat cameramatrix,double angle)

vector

distortcenterpnt;

double k1 = 0;

double k2 = 0;

double k3 = 0;

double k4 = 0;

vector

distort_coefficients;

distort_coefficients.push_back(k1);

distort_coefficients.push_back(k2);

distort_coefficients.push_back(k3);

distort_coefficients.push_back(k4);

mat rx = (mat_(3, 3) << 1, 0, 0, 0, cos(angle), -sin(angle), 0, sin(angle), cos(angle));

mat ry = (mat_(3, 3) << cos(angle), 0, sin(angle), 0, 1, 0, -sin(angle), 0, cos(angle));

mat rz = (mat_(3, 3) << cos(angle), -sin(angle), 0, sin(angle), cos(angle), 0, 0, 0, 1);

mat r = rx*ry;

undistortpoints(centerpnt, distortcenterpnt, cameramatrix, distort_coefficients, r);

**///需要將變換後的點先變化為齊次座標系,然後還需要乘以相機引數矩陣,才是最終的變化的座標。**

mat centerpntsthreecols = mat::zeros(8, 3, cv_64fc1);

for (size_t i = 0; i < centerpnt.size(); i++)

mat undistortcenterthreecols = cameramatrix*centerpntsthreecols.t();

vector

undistortcenterpnts;

for (size_t i = 0; i < centerpnt.size(); i++)

mat img1 = mat::zeros(1500, 1500, cv_64fc1);

mat img2 = mat::zeros(1500, 1500, cv_64fc1);

for (size_t i = 0; i < centerpnt.size(); i++)

namedwindow("源中心點", 2);

namedwindow("矯正後的中心點", 2);

imshow("源中心點", img1);

imshow("矯正後的中心點", img2);

waitkey();

imwrite("d:/1.bmp", img1);

imwrite("d:/2.bmp", img2);

}

程式執行結果:原來的中心點排布如下:

經過undistortpoints()旋轉變換後的中心點排布如下:`

注:**中加粗的部分為常常會犯錯誤的地方。

assert 函式用法總

assert巨集的原型定義在中,其作用是如果它的條件返回錯誤,則終止程式執行,原型定義 include void assert int expression assert的作用是現計算表示式 expression 如果其值為假 即為0 那麼它先向stderr列印一條出錯資訊,然後通過呼叫 abort...

Xpath contains 函式特殊用法總結

不了解 xpath的contains函式的可以看下w3c官方文件 xpath函式 可以看出 contains函式表示意思是,第乙個引數字串包含第二個引數時,返回true 實際用起來可能會有點差異 由於結合了路徑表示式和屬性 比如我們會有這麼用 tree.xpath div contains clas...

const,static,extern用法總結

const應用 一 對於基本宣告 const int r 100 標準const變數宣告加初始化,編譯器經過型別檢查後直接用100在編譯時替換。二 對於指標 1.int x 10 const int r x 指標指向的內容是常量,r指向的內容不能夠通過r改變,但如果是非const,內容可以通過自己改...