原图
旋转5°(虚化部分做了渐变处理)
旋转-5°(虚化部分做了渐变处理)
旋转270°(虚化部分做了渐变处理)
Cv2.Flip为图像的垂直翻转和水平翻转
Cv2.Flip(srcImg, vImg, FlipMode.X);
垂直翻转效果图如图所示
Cv2.Flip(srcImg, hImg, FlipMode.Y);
水平翻转效果图如图所示
任意角度旋转源代码
private Mat ImgRotate(Mat img, int angle)
{
Mat dst = new Mat();
Point2f pointCenter2F = new Point2f(img.Cols / 2, img.Rows / 2);
Mat rotImg = Cv2.GetRotationMatrix2D(pointCenter2F, angle, 1);
Size2f size2F = new Size2f(img.Size().Width, img.Size().Height);
//Rect rect = new RotatedRect(new Point2f(0, 0), size2F, angle).BoundingRect();
double x = Math.Abs(rotImg.At<double>(0, 0));
double z = Math.Abs(rotImg.At<double>(0, 1));
//计算出新的边框
double nW = img.Rows * z + img.Cols * x;
double nH = img.Rows * x + img.Cols * z;
double mW = rotImg.At<double>(0, 2) + (nW / 2.0) - img.Cols / 2.0;
double mH = rotImg.At<double>(1, 2) + (nH / 2.0) - img.Rows / 2.0;
Console.WriteLine($"mW={mW}; mH={mH}");
rotImg.Set(0, 2, mW);
rotImg.Set(1, 2, mH);
Cv2.WarpAffine(img, dst, rotImg, new Size(nW, nH));
return dst;
}
有问题的小伙伴可以留言哟!