在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度相关推荐

  1. 利用exif.js解决手机上传竖拍照片旋转90\180\270度问题

    利用exif.js解决手机上传竖拍照片旋转90\180\270度问题 参考文章: (1)利用exif.js解决手机上传竖拍照片旋转90\180\270度问题 (2)https://www.cnblog ...

  2. 小程序--实现图片点击旋转90,180,270度

    var _animation; // 动画实体 var _animationIndex = 0; // 动画执行次数index(当前执行了多少次) var _animationIntervalId = ...

  3. java canvas旋转_在HTML5 Canvas上将图像旋转90度

    我无法使用HTML5画布旋转图像 . 我想我的数学错误,并希望得到任何帮助 . 在移动设备上,我在150px x 558px画布上捕获用户签名 . 我试图创建一个558像素×150像素的图像,这只是旋 ...

  4. EasyPusher手机直播编码推送之图像旋转90度后画面重复的问题

    本文转自EasyDarwin开源团队开发Holo的博客:http://blog.csdn.net/holo_easydarwin 最初在做EasyPusher手机直播的时候遇到过一个问题:手机竖屏推送 ...

  5. EasyPusher手机直播图像旋转90度后画面重复的问题

    本文转自:http://blog.csdn.net/holo_easydarwin/article/details/51147379 最初在做EasyPusher手机直播的时候遇到过一个问题:手机竖屏 ...

  6. 给定一个 n X n 的矩阵 和 R,求旋转 90 X R 度以后的矩阵

    1. 问题 [例题]循环输入,每组数据先输入一个 n(n<=10),然后 n 行 n 列数据代表一个矩阵, 每个数据为一个整数,然后再给出一个数字 R,输出这个矩阵按照顺时针旋转 90 X R ...

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

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

  8. java图像旋转90度_旋转图像90度在java

    使用此方法. /** * Rotates an image. Actually rotates a new copy of the image. * * @param img The image to ...

  9. html 图像旋转180度

    IE:filter:progid:DXImageTransform.Microsoft.BasicImage(Rotation=2);(0,90,180,270度对应Rotation参数为0,1,2, ...

最新文章

  1. 关于CCRANDOM_0_1
  2. 渗透测试中的文件传输技巧
  3. 卷积神经网络、比较MLPS和CNNS、滤波器、CNN各层的作用、在Pytorch可视化CNN
  4. 中止是怎么用的_多士炉怎么用 使用多士炉注意事项
  5. jquery css事件编程 尺寸设置
  6. Android WebKit
  7. 爬虫 404 try_Python爬虫MOOC笔记
  8. 作者:邹本友,男,中国人民大学信息学院博士生, CCF学生会员。
  9. android.mk if else,gradle - 如何在Android Studio中使用我自己的Android.mk文件 - SO中文参考 - www.soinside.com...
  10. Atitit 核心技术有哪些一般 目录 第一章 Rest调用交互 2 第二章 2 第三章 Cmd调用交互 2 第四章 2 第五章 爬虫技术 2 第一节 Httpclient 2 第二节 Html
  11. 同一个网络下怎样在两台机器之间传输文件
  12. Arduino Nano 自制显示器 “流光溢彩” 外设教程(新人向)
  13. 人工智能与大数据就业前景_大数据,数据分析和人工智能方向就业前景
  14. MATLAB将.mat矩阵写成.tif图片
  15. NX文件名与工程图名自动关联
  16. Enterprise Architect安装包及教程
  17. 数学基础task08 二重积分
  18. webview加载网页,tel协议不会调出拨号盘?该如何处理
  19. 解决cesium widgets.css is not exported from package
  20. 暗藏在 win10 里的 3D 资源宝库

热门文章

  1. CloudComparer点云处理软件
  2. 华为认证物联网开发利器:小熊派IoT开发板
  3. CS131专题-8:图像纹理
  4. TensorFlow(7)卷积神经网络实战(1)(可视化)
  5. PHP与MySQL连接菜鸟教程_PHP 连接 MySQL - PHP 教程 - 菜鸟学堂-脚本之家
  6. win10 java applet_win10系统的ie11浏览器无法打开Java applet
  7. Debevec方法计算相机响应函数CRF
  8. 机器学习与高维信息检索 - Note 1 - 信息检索、机器学习与随机变量
  9. c4d教程-太空火车站场景创作视频教程Skillshare – Create A Space Train Scene With Cinema 4D Redshift Render
  10. leetcode-215 数组中的第K个最大元素