我有用于旋转的矩阵:
CvMat* rot_mat = cvCreateMat(2, 3, CV_32FC1);
cv2DRotationMatrix(center, angle, scale, rot_mat);
...
该矩阵用于图像操作。
cvWarpAffine(..., ..., rot_mat, ..., ...);
我必须知道,这个矩阵应该如何影响它应该传输的确切像素位置。
如何将 2D 点(像素位置)与矩阵相乘来找出像素应传输到的位置?
我在这找到了答案forum http://opencv-users.1802565.n2.nabble.com/How-to-multiply-Matrix-and-point-td5270927.html。以防万一链接失败,解决方案如下:
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));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)