背景:今天需要对程序生成的图像进行旋转90度和下采样操作,当然还有改变图像类型的操作,就是把原来.png的图像转换为.jpg的图像,主要是我目前使用libharu库,无法成功从本地加载png图像到pdf中去,不得不使用jpg图像。我的图像是横向的,为了能够更大的呈现在pdf中,我需要将图像旋转90度,得到竖向的图像。

我最初使用的方法是这样的

cv::Mat temp, dest;
cv::Mat img1 = cv::imread("dancer.png");cv::imshow("org", img1);
对读入的图像进行旋转90度
cv::Point2f center(img1.cols / 2, img1.rows / 2);
cv::Mat M = getRotationMatrix2D(center, 90, -1);
warpAffine(img1, dest, M, cv::Size(img1.cols, img1.rows));cv::imshow("dest", dest);
//将旋转后的图像降分辨率cv::imwrite("img1.png", dest);
cv::waitKey(0);

经过上面的方式对图像旋转90度后,得到的图像如下图,硬生生被截掉一截,

后来找到了这种方法,直接可以旋转90度,180度

cv::Mat temp, dest;
cv::Mat cover = cv::imread("dancer.png");
cv::imshow("org", cover);
transpose(cover, temp);
flip(temp, dest, 1);
cv::imshow("temp", temp);
cv::imshow("dest", dest);
cv::imwrite("temp.png", temp);
cv::imwrite("dest.png", dest);
cv::waitKey(0);

原始图像

经过tranpose进行变换的图像,达到的效果是对原图像顺时针旋转90度,且进行镜面变换。

既然进行了镜面变换,那我再给他镜面回来不久好了。使用flip函数进行镜面变换,我们可以看到,下面的图像就是将原始图像顺时针旋转90度的结果了。

下面实现将图像旋转180度。

cv::Mat temp, dest;
cv::Mat cover = cv::imread("dancer.png");
cv::imshow("org", cover);
flip(cover, dest, -1);
cv::imshow("dest", dest);
cv::imwrite("dest.png", dest);
cv::waitKey(0);

opencv图像仿射变换和普通旋转相关推荐

  1. opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移...

    常常需要最图像进行仿射变换,仿射变换后,我们可能需要将原来图像中的特征点坐标进行重新计算,获得原来图像中例如眼睛瞳孔坐标的新的位置,用于在新得到图像中继续利用瞳孔位置坐标. 仿射变换在:http:// ...

  2. OpenCV图像仿射变换

    OpenCV图像的旋转是通过图像的仿射变换来实现的,实现图像的旋转,分为三个步骤: 第一步:确定旋转角度和旋转中心. 第二步:确定旋转矩阵.通过getRotationMatrix2D函数计算出. 第三 ...

  3. opencv图像仿射变换,cv2.warpAffine

    目录 仿射变换原理介绍 cv2.warpAffine函数介绍 代码实例 仿射变换原理介绍 仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间. 在有 ...

  4. opencv 图像平移、缩放、旋转、翻转 图像仿射变换

    图像几何变换 图像几何变换从原理上看主要包括两种:基于2x3矩阵的仿射变换(平移.缩放.旋转.翻转).基于3x3矩阵的透视变换. 图像平移 opencv实现图像平移 实现图像平移,我们需要定义下面这样 ...

  5. 【OpenCV 4开发详解】图像仿射变换

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  6. OpenCV学习笔记(十五):图像仿射变换:warpAffine(),getRotationMatrix2D()

    OpenCV学习笔记(十五):图像仿射变换:warpAffine(),getRotationMatrix2D() 一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)的形式. ...

  7. OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】

    OpenCV图像几何变换专题(缩放.翻转.仿射变换及透视)(python为工具) [Open_CV系列(五)] 文章目录 准备图片 1. 缩放 cv2.resize()方法 2. 翻转 cv2.fli ...

  8. OpenCV之仿射变换:平移、缩放、旋转

    在使用OpenCV的过程中,发现仿射变换比较难以把握,所以决定吃透它.掌握这个知识的最好的方法搞懂,然后强化认知(教别人,写博文). 首先贴个地址,然后我先研究下: openCV官方文档:仿射变换 [ ...

  9. OpenCV 图像旋转、平移、缩放

    本文是 OpenCV图像视觉入门之路的第7篇文章,本文详细的进行了图像的缩放 cv2.resize().旋转 cv2.flip().平移 cv2.warpAffine()等操作. OpenCV 图像旋 ...

最新文章

  1. nginx基本配置与参数说明
  2. 域 无法管理计算机,计算机无法加入域的终级解决方法
  3. ARM 之六 Cortex-M 内核中断/异常系统、中断优先级/嵌套 详解
  4. 风控人需知:信贷风险流程中的决策矩阵与实操
  5. 【BZOJ-2768】冠军调查 最小割
  6. paip.重装系统需要备份的资料总结..v2.0 cad
  7. Android 使用Fragment,ViewPagerIndicator 制作csdn app主要框架
  8. 4款开源中文分词系统。
  9. android设备连接工具箱,ADB工具连接Android手机
  10. if语句 power query_判断(if)语句
  11. 渗透测试-SQL注入检测
  12. IT行业常见职位英语缩写及中文释义
  13. SVN_处理文件误删恢复
  14. 企业级的周报管理系统源码 采用了目前极为流行的扁平化响应式的设计风格
  15. gRPC详细入门教程,Golang/Python/PHP多语言讲解
  16. nodeJs各个版本下载
  17. 极客日报:曝OPPO给离职员工补发年终奖,此前遭克扣;7 亿条领英用户数据被出售;Android Studio 4.2.2 发布
  18. 页面不调转改变浏览器地址栏的方法
  19. 求生之路2服务器搭建指南个人存档
  20. 生命不息,折腾不止:Jetson Nano填坑之硬件篇

热门文章

  1. Bzoj3628: [JLOI2014]天天酷跑
  2. Android使用token维持登陆状态的方法
  3. 并行编程2——多核体系架构
  4. iframe实现页面无刷新上传文件(PHP)----备忘
  5. XP Sp2下双机通过无线网卡实现Internet共享
  6. mysql 主主复制的配置流程
  7. 【转】jquery 注册事件的方法
  8. uva10617 - Again Palindrome(dp)
  9. ubuntu制作usb启动盘
  10. 链方法[C# 基础知识系列]专题三:如何用委托包装多个方法——委托链