實在出乎我的意料!OpenCV竟然連這么簡單的功能都沒有封裝!還要讓本大爺自己動手寫!強烈要求OpenCV下一個版本添加本功能!

函數功能和這個網頁一樣,只不過這個作者寫的太糟了,我把它變得簡潔了一點  ^_^

 1 void rotate(const Mat& src, Mat& dst, float angle)
 2 {
 3     CV_Assert(!src.empty());
 4
 5     float radian = angle /180.0 * PI;
 6
 7     int uniSize = max(src.cols, src.rows) * 2;
 8     int dx = (uniSize - src.cols) / 2;
 9     int dy = (uniSize - src.rows) / 2;
10
11     copyMakeBorder(src, dst, dy, dy, dx, dx, BORDER_CONSTANT);
12
13     //旋轉中心
14     Point2f center(dst.cols/2, dst.rows/2);
15     Mat affine_matrix = getRotationMatrix2D( center, angle, 1.0 );
16
17     warpAffine(dst, dst, affine_matrix, dst.size());
18
19     float sinVal = fabs(sin(radian));
20     float cosVal = fabs(cos(radian));
21
22     //旋轉后的圖像大小
23     Size targetSize(src.cols * cosVal + src.rows * sinVal,
24                  src.cols * sinVal + src.rows * cosVal);
25
26     //剪掉四周边框
27     int x = (dst.cols - targetSize.width) / 2;
28     int y = (dst.rows - targetSize.height) / 2;
29
30     Rect rect(x, y, targetSize.width, targetSize.height);
31     dst = Mat(dst, rect);
32 }

转载于:https://www.cnblogs.com/easymind223/p/3330687.html

吐嘈OpenCV的图像旋转功能 _7相关推荐

  1. Opencv 基础(四):使用OpenCV进行图像旋转和平移

    如今,图像编辑变得越来越流行,因为手机有内置的功能,可以让你裁剪.旋转和更多的操作你的图像. 这篇文章中,我们将探索和学习这些图像编辑技术.具体来说,我们将学习如何: 旋转图像 移动图像 基本图像变换 ...

  2. 应用OpenCV进行图像旋转和平移

    简 介: 本文中,你了解了了如何通过OpenCV完成对于图像的旋转和平移.我们首先通过 getRotationMatrix2D() 获取2D旋转矩阵,然后完成了对于图像的旋转.具体是通过warpAff ...

  3. Opencv:图像旋转,cv2.getRotationMatrix2D 和 cv2.warpAffine 函数

    学习记录如何使用opencv实现对图像的旋转操作. 1 cv2.getRotationMatrix2D(center, angle, scale) 图像的旋转矩阵一般为: 但是单纯的这个矩阵是在原点处 ...

  4. OpenCV中图像旋转(warpAffine)算法的实现过程

    在OpenCV中,目前并没有现成的函数直接用来实现图像旋转,它是用仿射变换函数cv::warpAffine来实现的,此函数目前支持4种插值算法,最近邻.双线性.双三次.兰索斯插值,如果传进去的参数为基 ...

  5. 【OpenCV】图像旋转详解,边缘用黑色填充

    项目要用到图像旋转,OpenCV里面居然没有专门封装好的函数,只好自己写了.根据<learnning OpenCV>发现效果不是很理想,旋转后图像大小不变,可是图像却被裁减了. 例子如下: ...

  6. 图像分割 c语言程序,OpenCV实现图像切割功能

    openCV实现将图像切成m*n块,供大家参考,具体内容如下 一.代码部分: #include "stdafx.h" #include #include #include #inc ...

  7. android opencv 图像旋转90度,使用OpenCV转换图像( 旋转 90度)的简单方法?

    以下是我的EmguCV ( OpenCV的C# 端口) 解决方案:public static Image Rotate90(this Image img) where TColor : struct, ...

  8. 经验 | OpenCV图像旋转的原理与技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的 ...

  9. OpenCV图像旋转的原理与技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的第一 ...

最新文章

  1. LeetCode Length of Last Word(最后一个单词的长度)
  2. JavaScript window.getComputedStyle()
  3. java string isempty,java – String.isEmpty()和String.equals(“”)之间的区别
  4. WordPress的body_class()函数详解
  5. 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc
  6. 5.4. Interaction Between Devices and Kernel 设备与内核的交互
  7. hibernate树
  8. iOS 集合的深复制与浅复制
  9. 中文python笔记_python 中文编码笔记
  10. c语言vco_VCO仿真的方法
  11. canva画图 图片居中裁剪_男士秋裤,一片式补裆款裁剪图分享给大家。天凉该给家人做秋裤啦...
  12. 服务器虚拟化底层实现原理,虚拟化原理
  13. 【转载】教你怎么将centos7打造成桌面系统
  14. rpi4b引导ubuntu分析------distro_bootcmd
  15. js设置禁止浏览器刷新,右键和F5键
  16. 被封域名什么原因?如何预防域名被封呢?
  17. 运单状态机设计及全流程异常跟踪整体架构
  18. c语言less函数,Less 函数
  19. Linux中断分析2
  20. 面试必备之 悲观锁与乐观锁

热门文章

  1. mysql mha配置idrac远程关机_iDRAC远程管理功能试用_戴尔 PowerEdge R810(Xeon E7520/16GB/3*146GB)_服务器评测与技术-中关村在线...
  2. JDBC连接MySQL数据库:建立SSL连接出现警告信息
  3. 安卓案例:利用下拉列表选择科目
  4. AngularJS案例:简单计算
  5. SSM框架笔记16:EASYUI_SSM框架西蒙购物网
  6. 【BZOJ3226】【codevs2297】校门外的区间,线段树
  7. 【codevs1368】【BZOJ1034】泡泡堂BNB,贪心思路
  8. 2012021402
  9. 2017.9.6 礼物 思考记录
  10. 【英语学习】【English L06】U04 Adventure L4 I got lost in New York