利用仿射变换实现图像旋转
/************************************************************************/
/* 旋转图片:angle>0 逆时针 angle<0 顺时针 */
/************************************************************************/
void ImgRotate(Mat& src, Mat& dst, double angle)
{
Point2f center(src.cols / 2, src.rows / 2);
Mat rot = cv::getRotationMatrix2D(center, angle, 1);
Rect bbox = cv::RotatedRect(center, src.size(), angle).boundingRect();
rot.at<double>(0, 2) += bbox.width / 2.0 - center.x;
rot.at<double>(1, 2) += bbox.height / 2.0 - center.y;
warpAffine(src, dst, rot, bbox.size());
return;
}
int main()
{
//图片旋转
Mat src = imread("1_a.png");
double angle = -45;
Mat dst;
ImgRotate(src, dst, angle);
cout << "OK" << endl;
getchar();
return 0;
}