openCV—Python(5)—— 图像几何变换

一、函数简介

1、warpAffine—图像放射变换(平移、旋转、缩放)

函数原型:warpAffine(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=None)

src:原图像矩阵;

M:变换矩阵;

dszie:图像尺寸(大小)

其它参数默认即可。

2、flip—图像翻转

函数原型:flip(src, flipCode, dst=None)

sre:原图像矩阵;

flipCode:翻转方向:1:水平翻转;0:垂直翻转;-1:水平垂直翻转

dst:默认即可

二、实例演练

1、读取一幅图像:

1)向x轴正方向平移25个像素;

2)向y轴正方向平移50个像素;

2、读取一幅图像:

1)向x轴负方向平移50个像素;

2)向y轴负方向平移90个像素;

代码如下:

#encoding:utf-8
import numpy as np
import cv2
image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
M = np.float32([[1,0,25],[0,1,50]])#平移矩阵1:向x正方向平移25,向y正方向平移50
shifted = cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
cv2.imshow("Shifted Down and Right",shifted)
cv2.waitKey(0)
M = np.float32([[1,0,-50],[0,1,-90]])#平移矩阵2:向x负方向平移-50,向y负方向平移-90
shifted = cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
cv2.imshow("Shifted Up and Left",shifted)
cv2.waitKey(0)

结果如下:
1、原图像
这里写图片描述
2、x-25,y-50
这里写图片描述
3、x-50,y-90
这里写图片描述

3、读取一幅图像:

1)旋转45度,缩放0.75;

4、读取一幅图像:

1)旋转-45度,缩放1.25;

代码如下:

#encoding:utf-8
import numpy as np
import cv2
image = cv2.imread("H:\\img\\lena.jpg")

cv2.imshow("Original",image)
cv2.waitKey(0)
(h,w) = image.shape[:2]
center = (w / 2,h / 2)

#旋转45度,缩放0.75
M = cv2.getRotationMatrix2D(center,45,0.75)#旋转缩放矩阵:(旋转中心,旋转角度,缩放因子)
rotated = cv2.warpAffine(image,M,(w,h))
cv2.imshow("Rotated by 45 Degrees",rotated)
cv2.waitKey(0)
#旋转-45度,缩放1.25
M = cv2.getRotationMatrix2D(center,-45,1.25)#旋转缩放矩阵:(旋转中心,旋转角度,缩放因子)
rotated = cv2.warpAffine(image,M,(w,h))
cv2.imshow("Rotated by -90 Degrees",rotated)
cv2.waitKey(0)

结果如下:
1、原图像
这里写图片描述
2、theta-45,0.75
这里写图片描述
3、theta- -45,1.25
这里写图片描述

5、读取一幅图像:

1)水平翻转;

2)垂直翻转;

3)水平垂直翻转;

代码如下:

#encoding:utf-8
import cv2
#
#图像翻转
#

image = cv2.imread("H:\\img\\lena.jpg")
cv2.imshow("Original",image)
cv2.waitKey(0)

#图像水平翻转
flipped = cv2.flip(image,1)
cv2.imshow("Flipped Horizontally", flipped)
cv2.waitKey(0)

#图像垂直翻转
flipped = cv2.flip(image,0)
cv2.imshow("Flipped Vertically", flipped)
cv2.waitKey(0)

#图像水平垂直翻转
flipped = cv2.flip(image,-1)
cv2.imshow("Flipped Horizontally & Vertically", flipped)
cv2.waitKey(0)

结果如下:
1、原图像
这里写图片描述
2、水平翻转
这里写图片描述
3、垂直翻转
这里写图片描述
4、水平垂直翻转
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值