opencv for python (10) 图像旋转函数+仿射变换函数+透视变换

函数 cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
第一个参数——原图像旋转中心
第二个参数——以度为单位的旋转角度。正值表示逆时针旋转
第三个参数—— 各向同性的比例因子。
函数输出——仿射变换,2x3浮点矩阵
函数cv2.warpAffine(img,M,(2*cols,2*rows))
第一个参数——原图像
第二个参数——2x3仿射变换矩阵
第三个参数——生成图像的大小
函数cv2.getAffineTransform(pts1,pts2)
第一个参数——原图像中三角形的顶点坐标
第二个参数——变换后图像中三角形的顶点坐标
函数输出——两个坐标的变换矩阵

图像旋转

import cv2   
import numpy as np    
img = cv2.imread('test.jpg',0)
rows,cols = img.shape   
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
dst = cv2.warpAffine(img,M,(2*cols,2*rows))
while(1):
    cv2.imshow('img',dst)
    if cv2.waitKey(1)&0xFF == 27:
        break
cv2.destroyAllWindows()

图像放射变换

import cv2  
import numpy as np  
from matplotlib import pyplot as plt   

img = cv2.imread('test.jpg')
rows,cols,ch = img.shape      
pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]]) 
M = cv2.getAffineTransform(pts1,pts2)
dst = cv2.warpAffine(img,M,(cols,rows))

plt.subplot(121)
plt.imshow(img)
plt.title('input')
plt.subplot(122)
plt.title('output')
plt.imshow(dst)
plt.show()

图像透视变换

import cv2  
import numpy as np  
from matplotlib import pyplot as plt   

img = cv2.imread('img_wlk.jpg')
rows,cols,ch = img.shape      

pts1 = np.float32([[56,65],[368,52],[28,387],[389,398]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]]) 

M = cv2.getPerspectiveTransform(pts1,pts2)
dst = cv2.warpPerspective(img,M,(300,300))

plt.subplot(121)
plt.imshow(img)
plt.title('input')
plt.subplot(122)
plt.title('output')
plt.imshow(dst)
plt.show()

你可能感兴趣的:(opencv for python (10) 图像旋转函数+仿射变换函数+透视变换)