图像任意角度旋转和翻转(C#)

原图
在这里插入图片描述
旋转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;
        }

有问题的小伙伴可以留言哟!

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值