OpenCv-Python学习笔记(六):几何变换

目录

扩展缩放

平移

旋转

扩展缩放

import cv2

img = cv2.imread("../data/image/6.png")
#设置缩放因子
res = cv2.resize(img,None,fx = 2,fy = 2,interpolation = cv2.INTER_CUBIC)
#获取图像的宽度和长度
height,width=img.shape[:2]
#直接指定缩放大小
res1=cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
print(f"原图的大小:{img.shape}")
print(f"res的大小:{res.shape}")
print(f"res1的大小:{res1.shape}")

#原图的大小:(446, 364, 3)
#res的大小:(892, 728, 3)
#res1的大小:(892, 728, 3)


cv2.resize()函数,扩展缩放图片大小。
第一个参数表示输入图片。
第二个参数表示指定放大\缩小后的图片大小。
第三个参数表示X轴缩放因子,即图片缩放后的长度/图片原本的长度。
第四个参数表示Y轴缩放因子,即图片缩放后的高度/图片原本的高度。
第四个参数表示插值方法。
opencv提供五种插值方法,INTER_NEAREST、 INTER_LINEAR、INTER_AREA、INTER_CUBIC,和INTER_LANCZOS4,暂且不能理解这五种方法是什么意思,以后明白了在来补充。

平移

cv2.warpAffine()函数:平移图像。

第一参数表示输入图像。

第二个参数表示变换矩阵,例如,M= [[1,0,100],[0,1,5]]表示图像纵向移动100个像素,横向移动5个像素。

第三个参数表示输出图像的大小。

import cv2
import numpy as np
img = cv2.imread("../data/image/6.png")
# 获取图像的宽度和长度
height,width=img.shape[:2]
M = np.float32([[1,0,100],[0,1,5]])
res = cv2.warpAffine(img,M,(width,height))
cv2.imshow("img",img)
cv2.imshow("res",res)
cv2.waitKey()

OpenCv-Python学习笔记(六):几何变换_第1张图片

旋转

cv2.getRotationMatrix2D()函数:旋转图片

第一个参数表示旋转中心点。

第二个参数表示旋转角度。

第三个参数表示旋转后的缩放因子。

可以通过设置旋转中心,缩放因子以及窗口大小来防止旋转后超出边界的问题。

import cv2
import numpy as np
img = cv2.imread("../data/image/6.png")

# 获取图像的宽度和长度
height,width=img.shape[:2]
M = cv2.getRotationMatrix2D(((width-1)/2.0,(height-1)/2.0),90,1)
res = cv2.warpAffine(img,M,(width,height))
cv2.imshow("img",img)
cv2.imshow("res",res)
cv2.waitKey()

OpenCv-Python学习笔记(六):几何变换_第2张图片

你可能感兴趣的:(OpenCv-python,opencv,python,学习)