假设我有一些图像和一个旋转矩阵和平移向量,我想应用于该图像。我如何在openv中应用它?
我的假设是我有一些3D点(我有x,y,相对z)和相关的旋转矩阵(这是一个3x3矩阵),我希望将每个点乘以旋转矩阵,让它"作用"在这些点上。
OpenCV有一个翘曲仿射函数。
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)) ;
对于3x3,您可以/应该使用cv::warpPerspective。
cv::warpPerspective( image, warpedImage, warpMat, destinationSize );
我不确定这样做是否有性能原因,但是…
你也可以使用warpa仿射,但你实际上必须在翘曲之前将该矩阵转换为2x3。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 );
如果有更简单的方法,我希望有人能纠正我…