旋转和平移

Posted ly570

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了旋转和平移相关的知识,希望对你有一定的参考价值。

Point center(face_img.cols/2, face_img.rows/2);
//cv::Mat rot_mat = cv::getRotationMatrix2D(center, -1 * arctan, 1.0);

cv::Mat Rx(2, 3, CV_32FC1);

double theta_r = roll * 3.1415926 / 180; /** 3.1415926 / 180*/
float cos_theta = cos(theta_r);
float sin_theta = sin(theta_r);

Rx.at<float>(0, 0) = cos_theta;
Rx.at<float>(0, 1) = -sin_theta;
Rx.at<float>(0, 2) = (1-cos_theta)*center.x + center.y * sin_theta;

Rx.at<float>(1, 0) = sin_theta;
Rx.at<float>(1, 1) = cos_theta;
Rx.at<float>(1, 2) = (1-cos_theta) * center.y - center.x* sin_theta;

//std::cout << rot_mat << std::endl;

cv::Mat rotated_ROI;
cv::warpAffine(face_img, rotated_ROI, Rx, face_img.size(), cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar::all(0));
---------------------  

以上是关于旋转和平移的主要内容,如果未能解决你的问题,请参考以下文章

Flutter动画 --- 平移/旋转/缩放/渐变

从 OpenCV 中的旋转矩阵和平移向量中获取旋转轴

矩阵的平移旋转与缩放

对象坐标上的旋转和平移

OpenGL ES平移矩阵和旋转矩阵的左乘与右乘效果

OpenGL 平移和旋转同时进行