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 | 使用像素區(qū)域關系重新采樣。它可能是圖像抽取的首選方法,因為它可以提供無莫爾條紋的結果。但是當圖像被縮放時,它類似于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)

調節(jié)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)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
對numpy的array和python中自帶的list之間相互轉化詳解
下面小編就為大家分享一篇對numpy的array和python中自帶的list之間相互轉化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
python應用程序在windows下不出現cmd窗口的辦法
這篇文章主要介紹了python應用程序在windows下不出現cmd窗口的辦法,適用于python寫的GTK程序并用py2exe編譯的情況下,需要的朋友可以參考下2014-05-05

