数字图像处理(9): 图像缩放、图像旋转、图像翻转 和 图像平移 |
您所在的位置:网站首页 › 什么叫放大状态图像 › 数字图像处理(9): 图像缩放、图像旋转、图像翻转 和 图像平移 |
目录 1 图像缩放- resize() 2 图像旋转- getRotationMatrix2D(), warpAffine() 3 图像翻转- flip() 4 图像平移- warpAffine() 参考资料 图像几何变换有图像缩放、图像旋转、图像翻转和图像平移等。 1 图像缩放- resize() 图像缩放主要调用 resize() 函数实现,具体如下: result = cv2.resize(src, dsize[, result[. fx[, fy[, interpolation]]]]) 其中,参数 src 表示原始图像; dsize 表示缩放大小; fx和fy 也可以表示缩放大小倍数,他们两个(dsize或fx/fy)设置一个即可实现图像缩放。例如: (1)result = cv2.resize(src, (160,160)) (2)result = cv2.resize(src, None, fx=0.5, fy=0.5) 图像缩放:设
(1) cv2.resize(src, (200,100)) 设置的dsize是列数为200,行数为100 result = cv2.resize(src, (200,100)) 代码如下: # encoding:utf-8 import cv2 import numpy as np # 读取图片 src = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) # 图像缩放 result = cv2.resize(src, (200,100)) print (result.shape) # 显示图像 cv2.imshow("src", src) cv2.imshow("result", result) # 等待显示 cv2.waitKey(0) cv2.destroyAllWindows()
运行结果如下图所示:
(2)可以获取 原始图像像素 result = cv2.resize(src, (int(cols * 0.6), int(rows * 1.2)))
代码如下所示: # encoding:utf-8 import cv2 import numpy as np # 读取图片 src = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) rows, cols = src.shape[:2] print rows, cols # 图像缩放 dsize(列,行) result = cv2.resize(src, (int(cols * 0.6), int(rows * 1.2))) # 显示图像 cv2.imshow("src", src) cv2.imshow("result", result) # 等待显示 cv2.waitKey(0) cv2.destroyAllWindows()
运行结果如下图所示:
(3)(fx,fy) 缩放倍数的方法对图像进行放大或缩小。 result = cv2.resize(src, None, fx=0.3, fy=0.3)
代码如下所示: # encoding:utf-8 import cv2 import numpy as np # 读取图片 src =cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) rows, cols = src.shape[:2] print rows, cols # 图像缩放 result = cv2.resize(src, None, fx=0.3, fy=0.3) # 显示图像 cv2.imshow("src", src) cv2.imshow("result", result) # 等待显示 cv2.waitKey(0) cv2.destroyAllWindows()
运行结果如下图所示:(按例比 0.3 2 图像旋转- getRotationMatrix2D(), warpAffine() 图像旋转:设
图像旋转主要调用getRotationMatrix2D() 函数和 warpAffine() 函数实现,绕图像的中心旋转,具体如下: M = cv2.getRotationMatrix2D((cols/2, rows/2), 30, 1) 其中,参数分别为:旋转中心、旋转度数、scale rotated = cv2.warpAffine(src, M, (cols, rows)) 其中,参数分别为:原始图像、旋转参数 和 原始图像宽高
(1)旋转30度 代码如下: # encoding:utf-8 import cv2 import numpy as np # 读取图片 src = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) # 原图的高、宽 以及通道数 rows, cols, channel = src.shape # 绕图像的中心旋转 # 参数:旋转中心 旋转度数 scale M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 30, 1) # 参数:原始图像 旋转参数 元素图像宽高 rotated = cv2.warpAffine(src, M, (cols, rows)) # 显示图像 cv2.imshow("src", src) cv2.imshow("rotated", rotated)
运行结果如下图所示:
(2)旋转90度 代码如下: # encoding:utf-8 import cv2 import numpy as np # 读取图片 src = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) # 原图的高、宽 以及通道数 rows, cols, channel = src.shape # 绕图像的中心旋转 # 参数:旋转中心 旋转度数 scale M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 90, 1) # 参数:原始图像 旋转参数 元素图像宽高 rotated = cv2.warpAffine(src, M, (cols, rows)) # 显示图像 cv2.imshow("src", src) cv2.imshow("rotated", rotated)
运行结果如下图所示:
(3)旋转180度 代码如下: # encoding:utf-8 import cv2 import numpy as np # 读取图片 src = cv2.imread("lena.tiff", cv2.IMREAD_UNCHANGED) # 原图的高、宽 以及通道数 rows, cols, channel = src.shape # 绕图像的中心旋转 # 参数:旋转中心 旋转度数 scale M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 180, 1) # 参数:原始图像 旋转参数 元素图像宽高 rotated = cv2.warpAffine(src, M, (cols, rows)) # 显示图像 cv2.imshow("src", src) cv2.imshow("rotated", rotated)
运行结果如下图所示: 3 图像翻转- flip() 图像翻转在OpenCV中调用函数 flip() 实现,函数用法如下: dst = cv2.flip(src, flipCode) 其中,参数: src 表示原始图像; flipCode 表示翻转方向,如果flipCode为0,则以X轴为对称轴翻转,如果fliipCode>0则以Y轴为对称轴翻转,如果flipCode0以Y轴为对称轴翻转 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |