openc 图片旋转 ;OpenCvSharp 图片旋转

OpenCvSharp 版本 4.2.0

角度旋转核心代码:

/// <summary>/// 旋转图片任意角度/// </summary>/// <param name="src"></param>/// <param name="dst"></param>/// <param name="angle"></param>Mat rotate_arbitrarily_angle(Mat src, float angle){Mat dst = new Mat();float radian = (float)(angle / 180.0 * Cv2.PI);//填充图像int maxBorder = (int)(Math.Max(src.Cols, src.Rows) * 1.414); //即为sqrt(2)*maxint dx = (maxBorder - src.Cols) / 2;int dy = (maxBorder - src.Rows) / 2;Cv2.CopyMakeBorder(src, dst, dy, dy, dx, dx, BorderTypes.Constant);//旋转Point2f center = new Point2f((float)(dst.Cols / 2), (float)(dst.Rows / 2));Mat affine_matrix = Cv2.GetRotationMatrix2D(center, angle, 1.0);//求得旋转矩阵Cv2.WarpAffine(dst, dst, affine_matrix, dst.Size());//计算图像旋转之后包含图像的最大的矩形float sinVal = (float)Math.Abs(Math.Sin(radian));float cosVal = (float)Math.Abs(Math.Cos(radian));OpenCvSharp.Size targetSize = new OpenCvSharp.Size((int)(src.Cols * cosVal + src.Rows * sinVal),(int)(src.Cols * sinVal + src.Rows * cosVal));//剪掉多余边框int x = (dst.Cols - targetSize.Width) / 2;int y = (dst.Rows - targetSize.Height) / 2;Rect rect = new Rect(x, y, targetSize.Width, targetSize.Height);return new Mat(dst, rect);}

左旋转90°:

 string strImg1 = txtImg1.Text.Trim();if (string.IsNullOrEmpty(strImg1)){MessageBox.Show("请选择图片");return;}Image img1 = pbImg.BackgroundImage;Mat src = OpenCvSharp.Extensions.BitmapConverter.ToMat(new Bitmap(img1));Mat dst = rotate_arbitrarily_angle(src, 90);pbImg.BackgroundImage = dst.ToBitmap();

右旋转90°:

  string strImg1 = txtImg1.Text.Trim();if (string.IsNullOrEmpty(strImg1)){MessageBox.Show("请选择图片");return;}Image img1 = pbImg.BackgroundImage;Mat src = OpenCvSharp.Extensions.BitmapConverter.ToMat(new Bitmap(img1));Mat dst = rotate_arbitrarily_angle(src, -90);pbImg.BackgroundImage = dst.ToBitmap();

旋转180°:

 string strImg1 = txtImg1.Text.Trim();if (string.IsNullOrEmpty(strImg1)){MessageBox.Show("请选择图片");return;}Image img1 = pbImg.BackgroundImage;Mat src = OpenCvSharp.Extensions.BitmapConverter.ToMat(new Bitmap(img1));Mat dst = rotate_arbitrarily_angle(src, 180);pbImg.BackgroundImage = dst.ToBitmap();

垂直翻转:

 string strImg1 = txtImg1.Text.Trim();if (string.IsNullOrEmpty(strImg1)){MessageBox.Show("请选择图片");return;}Image img1 = pbImg.BackgroundImage;Mat src = OpenCvSharp.Extensions.BitmapConverter.ToMat(new Bitmap(img1));Mat dst = src.Flip(FlipMode.X);pbImg.BackgroundImage = dst.ToBitmap();

水平翻转:

 string strImg1 = txtImg1.Text.Trim();if (string.IsNullOrEmpty(strImg1)){MessageBox.Show("请选择图片");return;}Image img1 = pbImg.BackgroundImage;Mat src = OpenCvSharp.Extensions.BitmapConverter.ToMat(new Bitmap(img1));Mat dst = src.Flip(FlipMode.Y);pbImg.BackgroundImage = dst.ToBitmap();

源代码:https://download.csdn.net/download/TangLingBo/12628606

openc 图片旋转 ;OpenCvSharp 图片旋转相关推荐

  1. iOS传感器:实现一个随屏幕旋转的图片

    作者 非典型技术宅 关注 2017.05.24 17:22* 字数 1568 阅读 351评论 7喜欢 14 在写上一个动画系列的时候学到了非常多的知识,也认识了很多人.例如受邀进入了某个神秘的动效组 ...

  2. 图片的裁剪、旋转、平移、模糊

    图片的裁剪.旋转.放缩.平移.模糊) 1.图片的裁剪 2.Tensorflow 中图片的裁剪 2.图片的旋转 3.图片的放缩 4.图片的平移 5.图片的模糊 俗话说的好呀:图片不够,想办法来凑 在深度 ...

  3. 借助numpy.rot90实现图片顺时针旋转90°,旋转后图片没有黑边

    返回numpy 类型图片, numpy 通道是 "BGR" import cv2 import glob import numpy as np from PIL import Im ...

  4. [VC]旋转位图图片的算法函数

    网上有很多关于位图旋转的资料,但是讲得很清楚的不多(我没有仔细查找).于是我也写了一个,希望能给向我这样的初学者一点帮助. 第一步,你必须知道位图即BMP格式的文件的结构. 位图(bmp)文件由以下几 ...

  5. java 旋转图片_Java实现图片翻转以及任意角度旋转

    最近几天在做一个项目,因为涉及到了图片(绝大部分都不是整图,是把一张张的大图切成小图,也就是Title)的翻转以及90°旋转,弄得焦头烂额.在网上搜索好几天,发现用到的方法都是比较公式化的,对于只是在 ...

  6. jQuery 缩放 旋转 裁剪图片 Image Cropper

    A simple jQuery image cropping plugin. Demo cropper是一款使用简单且功能强大的图片剪裁jQuery插件.该图片剪裁插件支持图片放大缩小,支持图片旋转, ...

  7. 为什么手机上传图片这么慢 前端_解决BootStrap Fileinput手机图片上传显示旋转问题_心病_前端开发者...

    最近因为项目需要用到了bootstrap fileinput的插件,在使用苹果手机上传图片预览时,发现图片方向和手机本地存储方向不一致问题.后来通过查询资料了解图片具有EXIF(Exchangeabl ...

  8. java根据exif旋转,关于图片文件旋转JPEG与EXIF信息

    关于图片文件旋转JPEG与EXIF信息 2019/10/31 0:36:39  YuLimin  程序员俱乐部  我要评论(1) 摘要:关于图片文件旋转JPEG与EXIF信息比如某相机拍摄出来的相片, ...

  9. php图片翻转函数,PHP图片处理之图片旋转和图片翻转实例

    图片的旋转和翻转也是Web项目中比较常见的功能,但这是两个不同的概念,图片的旋转是按特定的角度来转动图片,而图片的翻转则是将图片的内容按特定的方向对调.图片翻转需要自己编写函数来实现,而旋转图片则可以 ...

最新文章

  1. Android 按压效果的工具类
  2. 在CentOS 6.3 64bit下yum安装MySQL后重置root密码的方法
  3. GraphQL 01--- GraphQL 介绍及资源总结
  4. php 通过相对或得绝对,相对路径与绝对路径的了解与深入
  5. 原来这才是日志打印的正确姿势!
  6. 【CodeForces - 122B 】Lucky Substring (字符串,水题)
  7. LeetCode-三数之和
  8. 《流畅的Python第二版》读书笔记——字典和集合
  9. Android_自适应布局
  10. enum 在c中的使用
  11. Hadoop学习笔记(三):作业调度器
  12. Python实践基于直方图的梯度提升集成方法
  13. 程序设计语言的基本概念
  14. 小白快速入门| springcloud系列之-快速上手feign
  15. Splunk健康检查orphaned searches
  16. Harmonious
  17. 幂平均不等式,幂平均不等式加权形式
  18. 浅析安全启动(Secure Boot) —写得很好
  19. 半导体行业十万级净化车间尘埃粒子监测
  20. 教程更新20220719

热门文章

  1. elecV2P的安装及使用
  2. 组播路由协议——PIM DM工作机制
  3. C++ STL的栈(stack)
  4. mysql 自动复制_MySQL 复制搭建(附mysql自动搭建脚本)
  5. 2020.8.5课堂笔记(多线程)
  6. 如何屏蔽 iOS 16 软件自动更新,去除更新通知和标记
  7. Qt编译报错:usr/include/c++/4.9/bits/stl_relops.:67: Parse error at “std“的解决办法
  8. 如何查询谷歌地球卫星数据源
  9. 减法公式运算法则_小学数学加减乘除计算运算法则
  10. (精心整理)WindowsXP终极优化设置