基于opencv库对图像进行平移,旋转以及翻转

1.平移:

在opencv中,通过warpAffine函数实现图像平移,格式为:

# cv2.warpAffine(src,M,dsize[,dst[,flags[,borderMode[,borderValue]]]])

其中,img表示输入的图像,M表示用于变换的矩阵,dsize表示输出图像的大小,dst表示输出的图像,flags表示进行矩阵变换的方法,borderMode表示边界填充模式,borderValue表示边界填充值。

原图:

基于opencv库对图像进行平移,旋转以及翻转_第1张图片

平移图像的代码为:

import cv2                           #导入需要用到的库
import numpy as np                   
img=cv2.imread('D:\pht/Taylor.jpg')    #导入原图像
H=np.float32([[1,0,100],[0,1,100]])   #定义平移矩阵
rows,cols=img.shape[:2]               #获取图像高宽(行列数)
res=cv2.warpAffine(img,H,(cols,rows)) #进行矩阵变化
cv2.imwrite('D:\pht/Taylor_res.jpg',res) #写入图像到路径

运行后的图片为:

基于opencv库对图像进行平移,旋转以及翻转_第2张图片

2.旋转

在Opencv中,通过getRotationMatrix2D函数实现获取图像的旋转变化矩阵,格式为:

cv2.getRotationMatrix2D(center,angle,scale)

其中,center表示旋转的中心点。

angle表示旋转角度。

scale表示缩放的比例。

旋转图像的代码为:

import cv2
img=cv2.imread('D:\pht/Taylor.jpg')
height,width=img.shape[:2]                    #获取图像高宽(行列数)
matRotate=cv2.getRotationMatrix2D((width*0.5,height*0.5),45,1) #计算旋转变化矩阵
img_rotate=cv2.warpAffine(img,matRotate,(width,height))      #旋转
cv2.imwrite('D:\pht/Taylor_rotate.jpg',img_rotate)

运行后的图像为:

基于opencv库对图像进行平移,旋转以及翻转_第3张图片

3.翻转

在Opencv中,通过flip函数实现图像翻转,其基本格式为:

cv2.flip(src,flipCode[,dst])

其中,src表示输入图像。

flipCode表示翻转类型,当参数大于等于 1 时,表示水平翻转;当等于 0 时,
表示垂直翻转;当小于等于-1 时,表示水平垂直翻转。

dst表示输出图像。

翻转图像的代码为:

import cv2   #导入cv2库
image=cv2.imread('D:\pht/Taylor.jpg') #读取原图片

(1)水平翻转

h_flip=cv2.flip(image,1)   #水平翻转
cv2.imwrite('D:\pht/Taylor_h.jpg',h_flip)

(2)垂直翻转

v_flip=cv2.flip(image,0)    #垂直翻转
cv2.imwrite('D:\pht/Taylor_v.jpg',v_flip)

(3)水平垂直翻转

hv_flip=cv2.flip(image,-1)
cv2.imwrite('D:\pht/Taylor_hv.jpg',hv_flip)

运行后的图像依次为:

基于opencv库对图像进行平移,旋转以及翻转_第4张图片

 基于opencv库对图像进行平移,旋转以及翻转_第5张图片

 基于opencv库对图像进行平移,旋转以及翻转_第6张图片

 就当是学习笔记了,到这就结束啦!

你可能感兴趣的:(opencv,计算机视觉,python)