2011-04-09 35 views
1

說我有一些圖像和旋轉矩陣以及我想應用於該圖像的平移矢量。我如何在opencv中應用它?我的假設是我有一些3D點(其中我有x,y,相對z)和相關的旋轉矩陣(這是一個3x3矩陣),我希望將每個點乘旋轉矩陣到讓它在這些點上「行動」。如何將矩陣應用於opencv中的圖像?

回答

0

OpenCV有一個warp affine函數爲此目的。

的OpenCV 1(舊的API):

cvWarpAffine(&srcImage, &dstImage, &mat2x3) ; 
// dst size will be same as src size. 

的OpenCV 2(新API):

cv::warpAffine(&srcImage, &dstImage, &mat2x3, cvSize(dstWidth, dstHeight)) ; 
+0

矩陣必須是2×3?這在應用3D旋轉或平移時沒有意義 – user696977 2011-04-09 15:52:45

+0

是的,由於圖像是2D平面上的投影,矩陣存儲2D旋轉和平移的基向量。請更新您的問題,以解釋您想實現什麼樣的3D轉換,以及您的假設是什麼。 – 2011-04-09 21:10:02

+0

已更新。謝謝你的幫助 – user696977 2011-04-09 21:22:22

0

對於一個3x3,你可以/應該使用CV :: warpPerspective。

cv::warpPerspective(image, warpedImage, warpMat, destinationSize); 

我不知道是否有一個表現的理由這樣做,但是......

您可以使用warpAffine爲好,但你確實有到矩陣轉換成2×3的扭曲了。 opencv API讓人非常痛苦。

cv::Mat af0 = affine2x3.row(0); // cannot copy directly for some reason 
affine3x3.row(0).copyTo(af0); 

cv::Mat af1 = affine2x3.row(1); 
affine3x3.row(1).copyTo(af1); 

cv::warpPerspective(image, warpedImage, affine2x3, destinationSize); 

如果有一個更簡單的方法,我很樂意有人糾正我......

相關問題