python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective
本文链接:https://blog.csdn.net/qq_27261889/article/details/80720359
# 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()
作者:柒月
Q群 :2122210(嵌入式/机器学习)