【OpenCV学习笔记】【编程实例】二(图像的旋转和翻转)
2014-09-01 18:35
337 查看
转自:OpenCV图像旋转和翻转
有时从摄像头获取的图像不是自己想要的方位,而又不想或者不能调整相机的位置时,我们就需要通过软件来调整图像的朝向。这就是本文中要介绍的图像的反转和翻转的问题。
基本的思路是:
(1)将使用transpose(src, dst);对目标图像进行转置变换,可以将垂直的图像变为水平放置
(2) 然后使用flip()函数对图像进行翻转。
有的人要问为什么不直接对图像进行翻转,该开始我也有同样的疑问,所以就用程序试了一下,才知道
flip()只是按照x,或者y坐标轴进行旋转,图像的宽和高始终没有变换,不能起到将图像整体旋转正负90°的效果。
效果如图下图所示:
有时从摄像头获取的图像不是自己想要的方位,而又不想或者不能调整相机的位置时,我们就需要通过软件来调整图像的朝向。这就是本文中要介绍的图像的反转和翻转的问题。
基本的思路是:
(1)将使用transpose(src, dst);对目标图像进行转置变换,可以将垂直的图像变为水平放置
(2) 然后使用flip()函数对图像进行翻转。
有的人要问为什么不直接对图像进行翻转,该开始我也有同样的疑问,所以就用程序试了一下,才知道
flip()只是按照x,或者y坐标轴进行旋转,图像的宽和高始终没有变换,不能起到将图像整体旋转正负90°的效果。
#include "stdafx.h" #include "opencv/cv.h" #include "opencv/highgui.h" #include "stdio.h" #include "iostream" using namespace cv; using namespace std; int _tmain(int argc, _TCHAR* argv[]) { Mat src = imread("test.jpg"); Mat dst; transpose(src, dst); Mat dst2; flip(dst, dst2, 1); // flip by y axis 是沿着y坐标轴旋转,而不是整体的旋转,以下类似 Mat dst3; flip(dst, dst3, 0); // flip by x axis Mat dst4; flip(dst, dst4, -1); // flip by both axises imshow("原图像", src); imshow("左旋90度,镜像", dst); //左旋90,镜像 imshow("右旋90度", dst2); //右旋90° imshow("左旋90度", dst3); //左旋90° imshow("右旋90度,镜像", dst4); //右旋90°,镜像 cvWaitKey(); return 0; }这里面用的最多可能就是左旋和右旋90°,其他的度数180°,-90°,可以通过多次旋转得到。
效果如图下图所示:
相关文章推荐
- 【OpenCV学习笔记】【编程实例】三(将一个图像中的指定区域拷贝到另一个图像的指定区域
- 【OpenCV学习笔记】【编程实例】六 (霍夫圆检测续)
- opencv学习笔记2——载入,显示,复制,旋转,保存图像及灰度图
- 我的OpenCV学习笔记(三):利用操作像素完成简单的图像处理:加入椒盐噪声、图像翻转、改变对比度、图像锐化
- 图像处理 基于Visual C++编程 学习笔记 (4)图像旋转
- 【Matlab学习笔记】【编程实例】一(将两幅图像调整为相同的尺寸大小)
- 【OpenCV学习笔记】之六 手写图像旋转函数---万丈高楼平地起
- 【OpenCV学习笔记】【编程实例】四(获取一个或多个感兴趣区域)
- 学习《OpenCV 2 计算机视觉编程手册》第二章遍历图像和领域操作实例——对图像进行锐化
- OpenCV学习笔记_图像扭曲及旋转操作
- opencv3学习笔记(二)图像的截图,旋转与大小的变化
- 【OpenCV学习笔记】【编程实例】五 (霍夫圆检测)
- 【OpenCV学习笔记】【编程实例】一(VS2010/MFC+OPenCV2.4.7读取图片和摄像头)
- 【OpenCV学习笔记】之六 手写图像旋转函数---万丈高楼平地起
- OpenCV学习笔记-图像分割
- OpenCV学习笔记-图像分割
- OpenCV学习笔记(八)——图像处理之直方图ImgProc
- C# OpenCV学习笔记四之图像二值化
- opencv学习笔记之Mat,图像的新容器
- OpenCV学习笔记---- 挨个读取图像文件夹下的所有文件,进行样本训练