通过transpose和flip实现图像旋转90/180/270度
在fbc_cv库中,提供了对图像进行任意角度旋转的函数rotate,其实内部也是调用了仿射变换函数warpAffine。如果图像仅是进行90度倍数的旋转,是没有必要用warpAffine函数的。这里通过transpose和flip函数实现对图像进行顺时针90度、180度、270度的旋转。
用fbc::transpose、fbc::flip和cv::transpose、cv::flip实现的结果是完全一致的。
通过fbc_cv库实现代码如下:
#include "test_rotate90.hpp"
#include <opencv2/opencv.hpp>
#include <transpose.hpp>
#include <flip.hpp>int test_rotate90()
{cv::Mat matSrc = cv::imread("E:/GitCode/OpenCV_Test/test_images/1.jpg", 1);if (!matSrc.data) {std::cout << "read image fail" << std::endl;return -1;}int width = matSrc.cols;int height = matSrc.rows;fbc::Mat_<uchar, 3> mat1(height, width, matSrc.data);fbc::Mat_<uchar, 3> matTranspose(width, height);fbc::transpose(mat1, matTranspose);// clockwise rotation 90fbc::Mat_<uchar, 3> matRotate90(width, height);fbc::flip(matTranspose, matRotate90, 1);cv::Mat tmp2(width, height, CV_8UC3, matRotate90.data);cv::imwrite("E:/GitCode/OpenCV_Test/test_images/rotate_90.jpg", tmp2);// clockwise rotation 180fbc::Mat_<uchar, 3> matRotate180(height, width);fbc::flip(mat1, matRotate180, -1);cv::Mat tmp3(height, width, CV_8UC3, matRotate180.data);cv::imwrite("E:/GitCode/OpenCV_Test/test_images/rotate_180.jpg", tmp3);// clockwise rotation 270fbc::Mat_<uchar, 3> matRotate270(width, height);fbc::flip(matTranspose, matRotate270, 0);cv::Mat tmp4(matTranspose.rows, matTranspose.cols, CV_8UC3, matRotate270.data);cv::imwrite("E:/GitCode/OpenCV_Test/test_images/rotate_270.jpg", tmp4);return 0;
}
结果图像如下:
原图
顺时针旋转90度
顺时针旋转180度
顺时针旋转270度
GitHub:https://github.com/fengbingchun/OpenCV_Test
通过transpose和flip实现图像旋转90/180/270度相关推荐
- 利用exif.js解决手机上传竖拍照片旋转90\180\270度问题
利用exif.js解决手机上传竖拍照片旋转90\180\270度问题 参考文章: (1)利用exif.js解决手机上传竖拍照片旋转90\180\270度问题 (2)https://www.cnblog ...
- 小程序--实现图片点击旋转90,180,270度
var _animation; // 动画实体 var _animationIndex = 0; // 动画执行次数index(当前执行了多少次) var _animationIntervalId = ...
- java canvas旋转_在HTML5 Canvas上将图像旋转90度
我无法使用HTML5画布旋转图像 . 我想我的数学错误,并希望得到任何帮助 . 在移动设备上,我在150px x 558px画布上捕获用户签名 . 我试图创建一个558像素×150像素的图像,这只是旋 ...
- EasyPusher手机直播编码推送之图像旋转90度后画面重复的问题
本文转自EasyDarwin开源团队开发Holo的博客:http://blog.csdn.net/holo_easydarwin 最初在做EasyPusher手机直播的时候遇到过一个问题:手机竖屏推送 ...
- EasyPusher手机直播图像旋转90度后画面重复的问题
本文转自:http://blog.csdn.net/holo_easydarwin/article/details/51147379 最初在做EasyPusher手机直播的时候遇到过一个问题:手机竖屏 ...
- 给定一个 n X n 的矩阵 和 R,求旋转 90 X R 度以后的矩阵
1. 问题 [例题]循环输入,每组数据先输入一个 n(n<=10),然后 n 行 n 列数据代表一个矩阵, 每个数据为一个整数,然后再给出一个数字 R,输出这个矩阵按照顺时针旋转 90 X R ...
- android opencv 图像旋转90度,使用OpenCV转换图像( 旋转 90度)的简单方法?
以下是我的EmguCV ( OpenCV的C# 端口) 解决方案:public static Image Rotate90(this Image img) where TColor : struct, ...
- java图像旋转90度_旋转图像90度在java
使用此方法. /** * Rotates an image. Actually rotates a new copy of the image. * * @param img The image to ...
- html 图像旋转180度
IE:filter:progid:DXImageTransform.Microsoft.BasicImage(Rotation=2);(0,90,180,270度对应Rotation参数为0,1,2, ...
最新文章
- 关于CCRANDOM_0_1
- 渗透测试中的文件传输技巧
- 卷积神经网络、比较MLPS和CNNS、滤波器、CNN各层的作用、在Pytorch可视化CNN
- 中止是怎么用的_多士炉怎么用 使用多士炉注意事项
- jquery css事件编程 尺寸设置
- Android WebKit
- 爬虫 404 try_Python爬虫MOOC笔记
- 作者:邹本友,男,中国人民大学信息学院博士生, CCF学生会员。
- android.mk if else,gradle - 如何在Android Studio中使用我自己的Android.mk文件 - SO中文参考 - www.soinside.com...
- Atitit 核心技术有哪些一般 目录 第一章 Rest调用交互	2 第二章 	2 第三章 Cmd调用交互	2 第四章 	2 第五章 爬虫技术	2 第一节 Httpclient	2 第二节 Html
- 同一个网络下怎样在两台机器之间传输文件
- Arduino Nano 自制显示器 “流光溢彩” 外设教程(新人向)
- 人工智能与大数据就业前景_大数据,数据分析和人工智能方向就业前景
- MATLAB将.mat矩阵写成.tif图片
- NX文件名与工程图名自动关联
- Enterprise Architect安装包及教程
- 数学基础task08 二重积分
- webview加载网页,tel协议不会调出拨号盘?该如何处理
- 解决cesium widgets.css is not exported from package
- 暗藏在 win10 里的 3D 资源宝库
热门文章
- CloudComparer点云处理软件
- 华为认证物联网开发利器:小熊派IoT开发板
- CS131专题-8:图像纹理
- TensorFlow(7)卷积神经网络实战(1)(可视化)
- PHP与MySQL连接菜鸟教程_PHP 连接 MySQL - PHP 教程 - 菜鸟学堂-脚本之家
- win10 java applet_win10系统的ie11浏览器无法打开Java applet
- Debevec方法计算相机响应函数CRF
- 机器学习与高维信息检索 - Note 1 - 信息检索、机器学习与随机变量
- c4d教程-太空火车站场景创作视频教程Skillshare – Create A Space Train Scene With Cinema 4D Redshift Render
- leetcode-215 数组中的第K个最大元素