本文鏈接: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()