吐嘈OpenCV的图像旋转功能 _7
實在出乎我的意料!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相关推荐
- Opencv 基础(四):使用OpenCV进行图像旋转和平移
如今,图像编辑变得越来越流行,因为手机有内置的功能,可以让你裁剪.旋转和更多的操作你的图像. 这篇文章中,我们将探索和学习这些图像编辑技术.具体来说,我们将学习如何: 旋转图像 移动图像 基本图像变换 ...
- 应用OpenCV进行图像旋转和平移
简 介: 本文中,你了解了了如何通过OpenCV完成对于图像的旋转和平移.我们首先通过 getRotationMatrix2D() 获取2D旋转矩阵,然后完成了对于图像的旋转.具体是通过warpAff ...
- Opencv:图像旋转,cv2.getRotationMatrix2D 和 cv2.warpAffine 函数
学习记录如何使用opencv实现对图像的旋转操作. 1 cv2.getRotationMatrix2D(center, angle, scale) 图像的旋转矩阵一般为: 但是单纯的这个矩阵是在原点处 ...
- OpenCV中图像旋转(warpAffine)算法的实现过程
在OpenCV中,目前并没有现成的函数直接用来实现图像旋转,它是用仿射变换函数cv::warpAffine来实现的,此函数目前支持4种插值算法,最近邻.双线性.双三次.兰索斯插值,如果传进去的参数为基 ...
- 【OpenCV】图像旋转详解,边缘用黑色填充
项目要用到图像旋转,OpenCV里面居然没有专门封装好的函数,只好自己写了.根据<learnning OpenCV>发现效果不是很理想,旋转后图像大小不变,可是图像却被裁减了. 例子如下: ...
- 图像分割 c语言程序,OpenCV实现图像切割功能
openCV实现将图像切成m*n块,供大家参考,具体内容如下 一.代码部分: #include "stdafx.h" #include #include #include #inc ...
- android opencv 图像旋转90度,使用OpenCV转换图像( 旋转 90度)的简单方法?
以下是我的EmguCV ( OpenCV的C# 端口) 解决方案:public static Image Rotate90(this Image img) where TColor : struct, ...
- 经验 | OpenCV图像旋转的原理与技巧
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的 ...
- OpenCV图像旋转的原理与技巧
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的第一 ...
最新文章
- LeetCode Length of Last Word(最后一个单词的长度)
- JavaScript window.getComputedStyle()
- java string isempty,java – String.isEmpty()和String.equals(“”)之间的区别
- WordPress的body_class()函数详解
- 狄斯奎诺算法 c语言,图的邻接表实现迪杰斯特拉算法(C语言).doc
- 5.4. Interaction Between Devices and Kernel 设备与内核的交互
- hibernate树
- iOS 集合的深复制与浅复制
- 中文python笔记_python 中文编码笔记
- c语言vco_VCO仿真的方法
- canva画图 图片居中裁剪_男士秋裤,一片式补裆款裁剪图分享给大家。天凉该给家人做秋裤啦...
- 服务器虚拟化底层实现原理,虚拟化原理
- 【转载】教你怎么将centos7打造成桌面系统
- rpi4b引导ubuntu分析------distro_bootcmd
- js设置禁止浏览器刷新,右键和F5键
- 被封域名什么原因?如何预防域名被封呢?
- 运单状态机设计及全流程异常跟踪整体架构
- c语言less函数,Less 函数
- Linux中断分析2
- 面试必备之 悲观锁与乐观锁
热门文章
- mysql mha配置idrac远程关机_iDRAC远程管理功能试用_戴尔 PowerEdge R810(Xeon E7520/16GB/3*146GB)_服务器评测与技术-中关村在线...
- JDBC连接MySQL数据库:建立SSL连接出现警告信息
- 安卓案例:利用下拉列表选择科目
- AngularJS案例:简单计算
- SSM框架笔记16:EASYUI_SSM框架西蒙购物网
- 【BZOJ3226】【codevs2297】校门外的区间,线段树
- 【codevs1368】【BZOJ1034】泡泡堂BNB,贪心思路
- 2012021402
- 2017.9.6 礼物 思考记录
- 【英语学习】【English L06】U04 Adventure L4 I got lost in New York