pythonopencv图像变换cv2.warpAffine和cv2.warpPerspective,以及变换矩阵的实现方法, python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective

python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective

# usr/bin/env python
# coding: utf-8

##################### 对图像进行变换(旋转)
# 2018年6月17日07:33:54
import cv2
import numpy as np

# 这里说一下旋转的opencv中为旋转提供的三个要素
# 旋转的中心点(center)
# 旋转角度()
# 旋转后进行放缩
# 我们可以通过cv2.getRotationMatrix2D函数得到转换矩阵

img = cv2.imread('cat.jpg')
rows,cols,_ = img.shape

matrix = cv2.getRotationMatrix2D((cols/2,rows/2),90,1)
# 得到变换的矩阵,通过这个矩阵再利用warpAffine来进行变换
# 第一个参数就是旋转中心,元组的形式,这里设置成相片中心
# 第二个参数90,是旋转的角度
# 第三个参数1,表示放缩的系数,1表示保持原图大小

img1 = cv2.warpAffine(img,matrix,(cols,rows))

cv2.imshow('img',img)
cv2.imshow('img1',img1)


##################### 对图像进行变换(三点得到一个变换矩阵)
# 我们知道三点确定一个平面,我们也可以通过确定三个点的关系来得到转换矩阵
# 然后再通过warpAffine来进行变换

img = cv2.imread('dog.jpg')
rows,cols,_ = img.shape

points1 = np.float32([[50,50],[200,50],[50,200]])
points2 = np.float32([[10,100],[200,50],[100,250]])

matrix = cv2.getAffineTransform(points1,points2)

output = cv2.warpAffine(img,matrix,(cols,rows))

cv2.imshow('input',img)
cv2.imshow('output',output)


##################### 对图像进行变换(四点得到一个变换矩阵)
# 进行透视变换
# 可以先用四个点来确定一个3*3的变换矩阵(cv2.getPerspectiveTransform)
# 然后通过cv2.warpPerspective和上述矩阵对图像进行变换

img = cv2.imread('cat.jpg')
rows,cols,_ = img.shape
points1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
points2 = np.float32([[0,0],[300,0],[0,300],[300,300]])

matrix = cv2.getPerspectiveTransform(points1,points2)
# 将四个点组成的平面转换成另四个点组成的一个平面

output = cv2.warpPerspective(img, matrix, (cols, rows))
# 通过warpPerspective函数来进行变换

cv2.imshow('img',img)
cv2.imshow('output',output)
cv2.waitKey()
cv2.destroyAllWindows()
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-7b4cdcb592.css" rel="stylesheet">
            </div>
</article>

猜你喜欢

转载自blog.csdn.net/m0_37192554/article/details/86610058