Python-OpenCV中的resize()函數


改變圖像大小意味着改變尺寸,無論是單獨的高或寬,還是兩者。也可以按比例調整圖像大小。

這里將介紹resize()函數的語法及實例。

語法

函數原型

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

參數:

參數 描述
src 【必需】原圖像
dsize 【必需】輸出圖像所需大小
fx 【可選】沿水平軸的比例因子
fy 【可選】沿垂直軸的比例因子
interpolation

【可選】插值方式

其中插值方式有很多種:

cv.INTER_NEAREST 最近鄰插值
cv.INTER_LINEAR 雙線性插值
cv.INTER_CUBIC 雙線性插值
cv.INTER_AREA 使用像素區域關系重新采樣。它可能是圖像抽取的首選方法,因為它可以提供無莫爾條紋的結果。但是當圖像被縮放時,它類似於INTER_NEAREST方法。

通常的,縮小使用cv.INTER_AREA,放縮使用cv.INTER_CUBIC(較慢)和cv.INTER_LINEAR(較快效果也不錯)。默認情況下,所有的放縮都使用cv.INTER_LINEAR。

 

例子

保留高寬比

以下是我們將在其上進行實驗的尺寸(149,200,4)(高度,寬度,通道數)的原始圖像:

 

 import cv2
 
img = cv2.imread('./Pictures/python.png', cv2.IMREAD_UNCHANGED)
 
print('Original Dimensions : ',img.shape)
 
scale_percent = 60       # percent of original size
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
# resize image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
 
print('Resized Dimensions : ',resized.shape)
 
cv2.imshow("Resized image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
 

結果:

Original Dimensions : (149, 200, 4)
Resized Dimensions : (89, 120, 4)

調節scale_percent可以放大或縮小。需要准備shape先高再寬,參數是先寬再高。

 

還有一種方式,就是使用自帶的參數fx和fy,更加方便。

import cv2
img = cv2.imread("./Pictures/python.png")
print('Original Dimensions : ', img.shape)

resized = cv2.resize(img, None, fx=0.6, fy=0.6, interpolation=cv2.INTER_AREA)

print('Resized Dimensions : ',resized.shape)

cv2.imshow("resized_img", resized)
cv2.waitKey(0)

 

不保留高寬比

例如,改變寬度,高度不變:

import cv2

img = cv2.imread("./Pictures/python.png")

print('Original Dimensions : ',img.shape)
 
width = 440
height = img.shape[0] # keep original height
dim = (width, height)
 
# resize image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
 
print('Resized Dimensions : ',resized.shape)
 
cv2.imshow("Resized image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()

結果:

Original Dimensions : (149, 200, 4)
Resized Dimensions : (149, 440, 4)

 

指定高和寬

給定高和寬的像數值。

import cv2

img = cv2.imread("./Pictures/python.png")

print('Original Dimensions : ',img.shape)
 
width = 350
height = 450
dim = (width, height)
 
# resize image
resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)
 
print('Resized Dimensions : ',resized.shape)
 
cv2.imshow("Resized image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()

結果:

Original Dimensions : (149, 200, 4)
Resized Dimensions : (450, 350, 4)

 

 

參考鏈接:


免責聲明!

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



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