图像旋转矩阵为 T = [ cos(alpha) sin(alpha); -sin(alpha) cos(alpha) ], 该矩阵为顺时针旋转alpha角度的矩阵。但图像中原点位于左上角,施加该矩阵得到的是逆时针旋转alpha角度的图像,所以顺时针旋转的变换矩阵为T = [ cos(alpha) -sin(alpha); sin(alpha) cos(alpha) ]。
代码如下:
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include <cmath>
using namespace cv;
using namespace std;
#define PI 3.14159265
void MyRotation(Mat& src, Mat& dst, float TransMat[3][3]);
/**
* @function main
*/
int main( int argc, char** argv )
{
// load image
char* imageName = "images/Lenna_256.png";
Mat image;
image = imread(imageName,1);
if(!image.data)
{
cout << "No image data" << endl;
return -1;
}
// show image
namedWindow("image", CV_WINDOW_AUTOSIZE);
imshow("image", image);
Mat dst;