2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 图像任意角度旋转和翻转(C#)

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

时间:2019-10-14 09:22:33

相关推荐

图像任意角度旋转和翻转(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;}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。