我有用于旋转的矩阵:
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点(像素位置)与矩阵相乘以找出应将像素转移到哪里?
我在这个论坛上找到了答案。万一链接失败,这里是解决方案:
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)