函数:flip
//参数1原图片,参数2翻转后的图片,参数3如何翻转(有3种)
flip(image, dst, -1);
void QuickDemo::flip_demo(Mat &image) {
Mat dst;
//flip(image,dst,0);//上下翻转
//flip(image, dst, 1);//左右翻转
flip(image, dst, -1);//180°旋转
imshow("图像翻转",dst);
}
函数: warpAffine
//参数1原来图像的中心位置。参数2角度是多少。参数3是图像本身大小的放大缩小
warpAffine(image, dst, M, Size(nw, nh), INTER_LINEAR, 0, Scalar(0, 255, 255));
void QuickDemo::rotate_demo(Mat &image) {
Mat dst, M;
int h = image.rows;//定义图片的高度
int w = image.cols;//定义图片的宽度
M = getRotationMatrix2D(Point(w / 2, h / 2), 45, 1.0);
double cos = abs(M.at<double>(0, 0));
double sin = abs(M.at<double>(0, 1));
int nw = cos * w + sin * h;
int nh = sin * w + cos * h;
M.at<double>(0, 2) += (nw / 2 - w / 2);
M.at<double>(1, 2) += (nh / 2 - h / 2);
//参数1原来图像的中心位置。参数2角度是多少。参数3是图像本身大小的放大缩小
warpAffine(image, dst, M, Size(nw, nh), INTER_LINEAR, 0, Scalar(0, 255, 255));
imshow("旋转演示", dst);
}
//相应尺寸和中心点皆需调整
int nw = cos * w + sin * h;
int nh = sin * w + cos * h;
//此处要注意 得到的m矩阵是一个2*3维的矩阵M矩阵如下
cos -sin 0
sin cos 0