6.2.2 cv::getRotationMatrix2D
6.2.2.1 Opencv接口
Mat cv::getRotationMatrix2D(Point2f center,
double angle,
double scale
)
参数
center 旋转图像所要围绕的中心点
angle 旋转的角度. 在OpenCV中正角度是逆时针的
scale 缩放因子,可选的
计算旋转矩阵。
6.2.2.2 代码及效果
void ES::ImageProcessing::rotateMatOper(cv::Mat* dst)
{
Mat src = imread("lena.jpg", IMREAD_COLOR);
cv::resize(src, src, Size(src.rows / 4 * 3, src.cols / 4 * 3));
//旋转图像所要围绕的中心
Point center = Point(src.cols / 2, src.rows / 2);
//旋转的角度. 在OpenCV中正角度是逆时针的
double angle = -50.0;
//缩放因子,可选的
double scale = 0.6;
ImageProcessingParams* img_params = static_cast<ImageProcessingParams*>(m_params);
angle = img_params->m_angle;
scale = img_params->m_scale;
Mat rot_mat(2, 3, CV_32FC1);
//利用OpenCV函数 getRotationMatrix2D 来获得旋转矩阵, 这个函数返回一个2*3 矩阵
rot_mat = getRotationMatrix2D(center, angle, scale);
Mat mat;
//将旋转矩阵用于源图像
warpAffine(src, mat, rot_mat, src.size());
Mat mergeMat(src.rows, src.cols + mat.cols, src.type());
Mat submat = mergeMat.colRange(0, src.cols);
src.copyTo(submat);
submat = mergeMat.colRange(src.cols, src.cols + mat.cols);
mat.copyTo(submat);
mergeMat.copyTo(*dst);
}