OpenCV。如何将点和矩阵相乘(CvMat)

use*_*691 3 c opencv

我有用于旋转的矩阵:

CvMat* rot_mat = cvCreateMat(2, 3, CV_32FC1);
cv2DRotationMatrix(center, angle, scale, rot_mat);
...
Run Code Online (Sandbox Code Playgroud)

该矩阵用于图像操作。

cvWarpAffine(..., ..., rot_mat, ..., ...);
Run Code Online (Sandbox Code Playgroud)

我必须知道,此矩阵应如何影响确切的像素-应该转移的位置。

如何将2D点(像素位置)与矩阵相乘以找出应将像素转移到哪里?

Yon*_*son 5

我在这个论坛上找到了答案。万一链接失败,这里是解决方案:

cv::Point2f operator*(cv::Mat M, const cv::Point2f& p)
{ 
    cv::Mat_<double> src(3/*rows*/,1 /* cols */); 

    src(0,0)=p.x; 
    src(1,0)=p.y; 
    src(2,0)=1.0; 

    cv::Mat_<double> dst = M*src; //USE MATRIX ALGEBRA 
    return cv::Point2f(dst(0,0),dst(1,0)); 
} 
Run Code Online (Sandbox Code Playgroud)