JavaCV cvEstimateRigidTransform函式使用心得
JavaCV cvEstimateRigidTransform函式使用心得
@Date 2018.09.27
函式定義
-
對應OpenCV中的estimateRigidTransform函式
- 此函式用作根據變換矩陣對圖片進行指定大小的變換
- Mat estimateRigidTransform(InputArray src,InputArray dst,bool fullAffine)
- src : 變換前的圖片關鍵點
- dst : 期望變換後的圖片關鍵點
- fullAffine : 1(全仿射變換), 0(帶有約束的仿射變換)
- 返回值 : 得到變換後的圖片MAT
使用場景
-
專案中實際場景可能為在一張圖片中, 切出人臉圖片. 但是人臉圖片是根據座標切割, 圖片的畫素大小是不固定的.
現在可以根據矩陣變換, 把所有人臉圖片歸一到指定大小, 比如80 * 80
JavaCV
- 在JavaCV中引數傳遞都是以Mat物件傳遞
- 需要提前開闢好關鍵點物件的空間
// pointer儲存關鍵點矩陣資訊 Point2f pointerX = new Point2f(); Point2f pointerY = new Point2f(); // 轉換pointer到mat Mat matSrcA = new Mat(3, 2, CV_32FC1, pointerX); Mat matSrcB = new Mat(3, 2, CV_32FC1, pointerY); // Javacv中返回值需要提前開闢傳入 Point2f cv = new Point2f(); Mat cvEstimateOut = new Mat(2, 3, CV_32FC1, cv); // 關鍵點矩陣轉換 cvEstimateRigidTransform(new CvMat(matSrcA), new CvMat(matSrcB), new CvMat(cvEstimateOut), 0); // JavaCV函式 : 根據前後關鍵點矩陣, 進行指定圖片大小的變換 Mat result = new Mat(80, 80, CV_8UC3); warpAffine(matImage, result, cvEstimateOut, new Size(80, 80));