0%

图片仿射变换

前言

想跟着b站大佬,去学习一些相关知识

使用opencv对图像进行仿射变换

过程

什么是仿射变换

通过将原图片上的三个点经过相关变换去映射到目标图片的三个点的变化,属于线性变换
仿射变换保持了二维图像的“平直性”和“平行性”

其中:三个点分别为:

  • 左上角
  • 左下角
  • 右下角

代码部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import cv2
import numpy as np
img = cv2.imread('YT.jpg', 1)
cv2.namedWindow("src", cv2.WINDOW_FREERATIO)
cv2.imshow('src', img)
imgInfo = img.shape
height = imgInfo[0]
weight = imgInfo[1]
matSrc = np.float32([[0, 0], [0, weight-1], [height-1, 0]])
matDst = np.float32([[100, 100], [300, height], [weight-300, 100]])
matAffine = cv2.getAffineTransform(matSrc, matDst)
# 得到的是一个矩阵的组合
dst = cv2.warpAffine(img, matAffine, (weight, height))
cv2.namedWindow("dst", cv2.WINDOW_FREERATIO)
cv2.imshow('dst', dst)
cv2.waitKey(0)

运行结果

原图

image

运行结果图

image

-------------我也是有底线的哦如需更多,欢迎打赏-------------