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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM