python 几何教学_opencv+python学习记录(四)几何变换

利用opencv实现仿射变换一般会涉及到warpAffine和getRotationMatrix2D两个函数,其中warpAffine可以实现一些简单的重映射,而getRotationMatrix2D可以获得旋转矩阵。

1、cv.warpAffine(src, M, dsize, flags, borderMode, borderValue)

src: 输入图像   M: 2x3的变换矩阵    dsize: 指定图像输出尺寸   flags: 插值算法标识符,有默认值INTER_LINEAR。

borderMode: 边界像素模式,有默认值BORDER_CONSTANT      borderValue: 边界取值,有默认值Scalar()即0

2、cv.getRotationMatrix2D(center, angle, scale)

center: 变换中心坐标    angle: 旋转的角度  scale: 缩放因子

#-*-coding:utf-8-*-

import numpy as np

import cv2 as cv

print("________Hello python________")

filename = ("face.jpg")

src = cv.imread(filename)

# cv.namedWindow("face", cv.WINDOW_AUTOSIZE)

h, w = src.shape[:2]    #读取图片的高和宽

A1 = np.array([[2, 0, 0], [0, 2, 0]], np.float32)   # 缩放矩阵2x3

d1 = cv.warpAffine(src, A1, (2*w, 2*h), borderValue=125)

A2 = np.array([[0.5, 0, w/4], [0, 0.5, h/4]], np.float32)  # 缩放、平移

d2 = cv.warpAffine(src, A2, (w, h), borderValue=125)

A3 = cv.getRotationMatrix2D((w/2, h/2), 30, 1)  # 旋转矩阵:变换中心(w/2, h/2), 旋转角度30

d3 = cv.warpAffine(d2, A3, (w, h), borderValue=125)

#输入,输出,X缩放因子,Y缩放因子,插值方法

res = cv.resize(src, (2*w, 2*h), fx=2, fy=2, interpolation=cv.INTER_CUBIC)

cv.imshow("face", src)

cv.imshow("d1", d1)

cv.imshow("d2", d2)

cv.imshow("d3", d3)

cv.imshow("res", res)

cv.waitKey(0)

cv.destroyAllWindows()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值