因為專案需要,開始接觸透視變換的原理和實現。請注意透視變換與仿射變換的區別。
其核心思想是:找到原影象中的四個點,確定變換之後的四個點位置,分別對應,然後呼叫函式,計算出透視變換的4*4矩陣。最後,利用得到的透視變換矩陣,根據原影象,即可計算出變換之後的影象。
話不多說,先上一些**。
開發環境opencv2413+vs2013
cv::mat quad = cv::mat::zeros(300, 220, cv_8uc3);//目標影象的大小
std::vectorquad_pts;//目標影象的四個頂點
quad_pts.push_back(cv::point2f(0, 0));
quad_pts.push_back(cv::point2f(quad.cols, 0));
quad_pts.push_back(cv::point2f(quad.cols, quad.rows));
quad_pts.push_back(cv::point2f(0, quad.rows));
cv::mat transmtx = cv::getperspectivetransform(corners, quad_pts);//計算得到透視變換矩陣
cv::warpperspective(src, quad, transmtx, quad.size());//根據透視變換,矯正影象
效果如下圖所示
opencv透視變換
1 目前效果最好的乙個 但還是紙牌能檢測出來 2 下面將我修改執行成功的 貼出,至於優化,提高識別四邊形準確度,還需要繼續研究。透視變換,檢測四邊形,有時候容易檢測不出 但目前效果最好的就是該程式 include stdafx.h include core core.hpp include incl...
opencv 透視變換
cv getperspectivetransform c 介面其呼叫形式如下 point2f src 4 dst 4 src 0 x 賦值 cv mat cv getperspectivetransform 返回透視變換矩陣 const cv point2f src,源影象四個頂點座標 點陣列 co...
OpenCV 透視變換矯正
演示結果參考 功能實現 執行程式,會顯示的尺寸,按回車鍵後,依次點選需矯正的的左上 右上 左下 右下角,並能顯示其座標,結果彈出矯正後的,如圖上的pic2對話方塊。可以繼續選擇四個點進行實驗,按下字元 q 後退出。如下 注 圖中的11.jpg自己選取放到該程式目錄下。使用滑鼠在原影象上選取感興趣區域...