仿射变换

仿射变换函数

dst=cv2.warpAffine(src,M,dsize,flags,borderMode,borderValue)

dst:仿射后的输出图像,类型与原始图像相同。
src:原始图像。
M:变换矩阵。
dsize:输出图像的尺寸大小。
flags:插值方法。(可选)
borderMode:边类型。(可选)
borderValue:边界值。(可选)

平移

import cv2 as cv
import numpy as np

# 让图片向右上平移120像素
image1 = cv.imread("D:/exercise/lusi.jpg")  # 读入图像
h, w = image1.shape[:2]  # 元组切片,读出原图像的行数和列数
M = np.float32([[1, 0, 120], [0, 1, -120]])  # 构建转换矩阵M
imageMove = cv.warpAffine(image1, M, (w, h))  # 平移仿射变换
cv.imshow('image1', image1)
cv.imshow('imageMove', imageMove)
cv.waitKey()
cv.destroyAllWindows()

运行结果:

缩放

import cv2 as cv
import numpy as np

# 让图片缩放二分之一
image1 = cv.imread("D:/exercise/lusi.jpg")  # 读入图像
h, w = image1.shape[:2]  # 元组切片,读出原图像的行数和列数
M = np.float32([[0.5, 0, 0], [0, 0.5, 0]])  # 构建转换矩阵M
imageMove = cv.warpAffine(image1, M, (w, h))  # 缩放仿射变换
cv.imshow('image1', image1)
cv.imshow('imageMove', imageMove)
cv.waitKey()
cv.destroyAllWindows()

旋转

旋转的转换矩阵声明:
ret = cv2.getRotationMatrix2D(center,angle,scale)

center:旋转中心点。
angle:旋转角度,正数为逆时针,负数为顺时针。
acale:变换尺度。

import cv2 as cv

# 让图片以宽高的1/2为旋转中心,逆时针旋转30度,并缩小为原来的0.4倍
image1 = cv.imread("D:/exercise/lusi.jpg")  # 读入图像
h, w = image1.shape[:2]  # 元组切片,读出原图像的行数和列数
M = cv.getRotationMatrix2D((w / 2, h / 2), 30, 0.4)  # 构建转换矩阵M
imageMove = cv.warpAffine(image1, M, (w, h))  # 旋转仿射变换
cv.imshow('image1', image1)
cv.imshow('imageMove', imageMove)
cv.waitKey()
cv.destroyAllWindows()

运行结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值