Rotation and translation

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));
---------------------  

Guess you like

Origin www.cnblogs.com/ly570/p/11277995.html