python-opencv 圖像幾何變換--縮放、平移、旋轉


縮放

 

縮放是調整圖片的大小,可以指定輸出圖像尺寸大小,也可以指定縮放比例。

opencv函數原型

cv2.resize(InputArray src, OutputArray dst, Size, fx, fy, interpolation)
InputArray src                                                                                                          輸入圖像                                                                                                                                         
OutputArrzy dst 輸出圖像
Size 輸出圖像尺寸
fx, fy x軸,y軸的縮放系數
interpolation 插值方式

interpolation插值方式:

插值方式有INTER_NEAREST 最近鄰插值、INTER_LINEAR 雙線性插值、INTER_AREA 像素區域重采樣、INTER_CUBIC 4*4像素鄰域雙三次插值、 INTER_LANCZOS4 8*8像素鄰域Lanczos插值。其中INTER_LINEAR為默認的插值方法,首選的插值方法是INTER_AREA。我們可以使用以下方法調整圖像大小:

import cv2 as cv

img = cv.imread(r'Lena.png', 1)
res1 = cv.resize(img, None, fx=0.5, fy=0.5, interpolation=cv.INTER_AREA)
# Or
height, width = img.shape[ : 2]
res2 = cv.resize(img, (int(0.5*width), int(0.5*height)), interpolation=cv.INTER_AREA)

 

平移

 

在對圖像作平移操作時,需創建變換矩陣。2行3列矩陣,決定了何種變換。M矩陣則表示水平方向上平移為x而豎直方向上的平移距離為y。

CodeCogsEqn

import numpy as np
import cv2 as cv

img = cv.imread(r'Lena.png', 1)
rows, cols, channels = img.shape
M = np.float32([[1,0,100],[0,1,50]])
res = cv.warpAffine(img, M, (cols, rows))
# cv.warpAffine()第三個參數為輸出的圖像大小,值得注意的是該參數形式為(width, height)。
cv.imshow('img', res)
cv.waitKey(0)
cv.destroyAllWindows()

 

效果圖

imageimage

 

旋轉

 

旋轉需變換矩陣,而函數cv.getRotationMatrix2D()會找到此轉換矩陣。

import cv2 as cv

img = cv.imread(r'Lena.png', 1)
rows, cols, channels = img.shape
rotate = cv.getRotationMatrix2D((rows*0.5, cols*0.5), 45, 1)
'''
第一個參數:旋轉中心點
第二個參數:旋轉角度
第三個參數:縮放比例
'''
res = cv.warpAffine(img, rotate, (cols, rows))
cv.imshow('img', img)
cv.imshow('res', res)
cv.waitKey(0)
cv.destroyAllWindows()

效果圖

imageimage


免責聲明!

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



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