作者SiriusJinn (假斯汀)
看板C_and_CPP
標題[問題] OpenCV 做透視轉換
時間Sun Jun 14 12:10:45 2009
有找到兩種函式
1.void cvWarpPerspective( const CvArr* src, CvArr* dst, const CvMat* map_matrix,
int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,
CvScalar fillval=cvScalarAll(0) );
src
輸入圖像.
dst
輸出圖像.
map_matrix
3×3 變換矩陣
flags
差值方法的開關選項:
CV_WARP_FILL_OUTLIERS - 填充所有縮小圖像的像素。如果部分像素落在輸入圖像的
邊界外,那麼它們的值設定為 fillval.
CV_WARP_INVERSE_MAP - 指定 matrix 是輸出圖像到輸入圖像的反變換,因此可以直
接用來做像素差值。否則, 函數從 map_matrix 得到反變換。
fillval
用來填充邊界外面的值
2.CvMat* cvWarpPerspectiveQMatrix( const CvPoint2D32f* src,
const CvPoint2D32f* dst,
CvMat* map_matrix );
src
輸入圖像的四邊形的4個點坐標
dst
輸出圖像的對應四邊形的4個點坐標
map_matrix
輸出的 3×3 矩陣
比較起來似乎第2種方法會比較快吧?
想請問的是要怎麼取出輸入圖像的4個點坐標呢?
感謝回答!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.36.60
推 wa120:兩種的性質不一樣 一個是輸入圖 一個是輸入點阿 06/14 12:44
→ SiriusJinn:1.應該是array 2.應該是點 取點的運算量是不是比較小 06/14 13:12
→ SiriusJinn:不過我正在研究其中的運算式,不知怎麼變換就是了..... 06/14 13:13
→ SiriusJinn:剛查了一下CvArr可指定不同類型,但是圖要怎麼變成那樣 06/14 13:16
推 licheer:第一種是,給SRC圖,給變換矩陣,輸出DST圖 06/14 16:42
→ licheer:第二種是,給兩張圖其中分別對應的四組座標,算出矩陣 06/14 16:43