图像旋转和平移是图像处理中常用的一种操作,opencv2和opencv3中对图像的旋转和平移都是通过仿射变换函数cv::warpAffine()来实现的。

1、图像的旋转

图像的旋转具体实现分为两步:先根据旋转角度和旋转中心获取旋转矩阵;然后根据旋转矩阵进行仿射变换,即可实现任意角度和任意中心的旋转效果。旋转矩阵的形式如下:

其中,

具体代码如下:

 cv::Mat src = cv::imread("lenna.jpg");cv::Mat dst;//旋转角度double angle = 45;cv::Size src_sz = src.size();cv::Size dst_sz(src_sz.height, src_sz.width);int len = std::max(src.cols, src.rows);//指定旋转中心cv::Point2f center(len / 2., len / 2.);//获取旋转矩阵(2x3矩阵)cv::Mat rot_mat = cv::getRotationMatrix2D(center, angle, 1.0);//根据旋转矩阵进行仿射变换cv::warpAffine(src, dst, rot_mat, dst_sz);//显示旋转效果cv::imshow("image", src);cv::imshow("result", dst);cv::waitKey(0);return 0;

结果如下:

2、图像的平移

图像的平移也分为两步:首先定义好图像的平移矩阵,分别指定x方向和y方向上的平移量tx和ty,平移矩阵的形式如下:

具体代码如下:

 cv::Mat src = cv::imread("lenna.jpg");cv::Mat dst;cv::Size dst_sz = src.size();//定义平移矩阵cv::Mat t_mat =cv::Mat::zeros(2, 3, CV_32FC1);t_mat.at<float>(0, 0) = 1;t_mat.at<float>(0, 2) = 20; //水平平移量t_mat.at<float>(1, 1) = 1;t_mat.at<float>(1, 2) = 10; //竖直平移量//根据平移矩阵进行仿射变换cv::warpAffine(src, dst, t_mat, dst_sz);//显示平移效果cv::imshow("image", src);cv::imshow("result", dst);cv::waitKey(0);return 0;

平移结果如下:

2017.04.26

【OpenCV3】图像旋转与平移——cv::warpAffine()详解相关推荐

  1. opencv warpAffine()函数详解 -- 图像旋转与平移

    简述 仿射变换是二维坐标间的线性变换,故而变换后的图像仍然具有原图的一些性质,包括"平直性"以及"平行性",常用于图像翻转(Flip).旋转(Rotations ...

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

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

  3. 【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解

    棋盘格法是摄像机标定中常用的一种方法,在使用该方法时需要对棋盘格的角点进行检测.opencv中封装了一个专门用于棋盘格角点检测的函数即cv::findChessboardCorners(),同时,也提 ...

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

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

  5. [Python从零到壹] 五十一.图像增强及运算篇之图像灰度直方图对比分析万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  6. [转] OpenCV 文字绘制cv::putText详解

    ref:[OpenCV3]文字绘制--cv::putText详解_cv.puttext_PHILOS_THU的博客-CSDN博客 opencv学习(十三)之文本文字插入_opencv视频添加文本并保存 ...

  7. 旋转排序数组系列题详解

    旋转排序数组系列题详解 文章目录 旋转排序数组系列题详解 一.问题描述:旋转数组的最小数字 二.分析:二分查找 三.代码 四.问题描述:寻找旋转排序数组中的最小值 五.分析:二分搜索 六.代码 七.问 ...

  8. python中减法运算函数_OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减...

    OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减 OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比 ? ? 前往老猿 ...

  9. 学习OpenCV3——图像旋转算法实现

    图像旋转是非常常见的图像变换,通常应用于图像矫正,在OpenCV可以使用密集仿射变换函数cv::warpAffine()实现图像旋转.为了理解图像旋转的原理,本文实现了一个图像旋转算法. 图像旋转是指 ...

最新文章

  1. 如何:重写 ToString 方法(C# 编程指南)
  2. 设计RandomPool结构
  3. makefile格式-实践一
  4. c#图片base64去转义字符_C#实现字符串与图片的Base64编码转换操作示例|chu
  5. mysql数据库实现主从复制
  6. 西门子s7-200解密软件下载_西门子S7200仿真软件如何使用?
  7. 2019.5.18-5.19 ACM-ICPC 全国邀请赛(西安)赛后总结
  8. Xcode9模拟器隐藏边框
  9. cesium添加填充_cesium编程中级(四)使用渐变纹理
  10. 江苏省计算机学业水平测试时间,江苏2018年高中学业水平考试时间公布
  11. python爬虫框架源码_python爬虫的基本框架
  12. leetcode刷题:不同路径II
  13. 我安装java了_我安装了JAVA为什么.......
  14. 对JQuery中Ajax应用与jQuery插件的理解与笔记
  15. 拓端tecdat|R语言隐马尔可夫模型HMM识别股市变化分析报告
  16. 算法设计与分析复习——第四章:贪心算法
  17. 【ZOJ 4053】【青岛网络赛主席树+启发式合并】
  18. python去重脚本
  19. CSS之颜色和背景的属性设置
  20. Ipad IOS 蓝牙键盘快捷键

热门文章

  1. MySQL - 践行索引优化
  2. AS插件-Android Parcelable code generator.
  3. 通过设置Cookie 让弹框显示一次
  4. “http://127.0.0.1:8888' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header”
  5. 解决:The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
  6. pythondistinct教程_mongodb如何执行distinct
  7. Matlab实用程序--图形应用-饼图的绘制
  8. MATLAB-M文件
  9. 草履虫纳米机器人_激光驱动的机器人大军!Nature:机器人尺寸小于 0.1 毫米,4 英寸晶圆可容纳 100 万个...
  10. 详解tf.nn.dropout