Python OpenCV中的resize()函數(shù)的使用
改變圖像大小意味著改變尺寸,無(wú)論是單獨(dú)的高或?qū)?,還是兩者。也可以按比例調(diào)整圖像大小。
這里將介紹resize()函數(shù)的語(yǔ)法及實(shí)例。
語(yǔ)法
函數(shù)原型
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
參數(shù):
參數(shù) | 描述 |
src | 【必需】原圖像 |
dsize | 【必需】輸出圖像所需大小 |
fx | 【可選】沿水平軸的比例因子 |
fy | 【可選】沿垂直軸的比例因子 |
interpolation |
【可選】插值方式 |
【可選】插值方式
其中插值方式有很多種:
cv.INTER_NEAREST | 最近鄰插值 |
cv.INTER_LINEAR | 雙線性插值 |
cv.INTER_CUBIC | 雙線性插值 |
cv.INTER_AREA | 使用像素區(qū)域關(guān)系重新采樣。它可能是圖像抽取的首選方法,因?yàn)樗梢蕴峁o(wú)莫爾條紋的結(jié)果。但是當(dāng)圖像被縮放時(shí),它類似于INTER_NEAREST方法。 |
通常的,縮小使用cv.INTER_AREA,放縮使用cv.INTER_CUBIC(較慢)和cv.INTER_LINEAR(較快效果也不錯(cuò))。默認(rèn)情況下,所有的放縮都使用cv.INTER_LINEAR。
例子
保留高寬比
以下是我們將在其上進(jìn)行實(shí)驗(yàn)的尺寸(149,200,4)(高度,寬度,通道數(shù))的原始圖像:
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()
結(jié)果:
Original Dimensions : (149, 200, 4)
Resized Dimensions : (89, 120, 4)
調(diào)節(jié)scale_percent可以放大或縮小。需要準(zhǔn)備shape先高再寬,參數(shù)是先寬再高。
還有一種方式,就是使用自帶的參數(shù)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()
結(jié)果:
Original Dimensions : (149, 200, 4)
Resized Dimensions : (149, 440, 4)
指定高和寬
給定高和寬的像數(shù)值。
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()
結(jié)果:
Original Dimensions : (149, 200, 4)
Resized Dimensions : (450, 350, 4)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python檢測(cè)生僻字的實(shí)現(xiàn)方法
最近在工作中碰到一個(gè)需求,要求檢測(cè)字段是否包含生僻字以及一些非法字符如 ~!@#$%^&*。通過網(wǎng)上的查找資料解決了,現(xiàn)在將解決的過程和示例代碼分享給大家,有需要的可以參考借鑒。下面來一起看看吧。2016-10-10Python項(xiàng)目管理工具Poetry使用示例詳解
這篇文章主要為大家介紹了Python項(xiàng)目管理工具Poetry使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09使用Python實(shí)現(xiàn)對(duì)PDF文件進(jìn)行密碼保護(hù)
這篇文章主要為大家詳細(xì)了如何使用Python來實(shí)現(xiàn)PDF文件的密碼保護(hù),以確保只有授權(quán)的用戶可以訪問文檔,文中的示例代碼簡(jiǎn)潔易懂,有需要的小伙伴可以參考一下2024-01-01關(guān)于Python3 類方法、靜態(tài)方法新解
今天小編就為大家分享一篇關(guān)于Python3 類方法、靜態(tài)方法新解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08一些讓Python代碼簡(jiǎn)潔的實(shí)用技巧總結(jié)
隨著項(xiàng)目代碼行數(shù)的增加,不可避免的遇到軟件架構(gòu)腐敗的問題,所以如何寫出簡(jiǎn)潔的代碼至關(guān)重要,這篇文章主要給大家介紹了一些讓Python代碼簡(jiǎn)潔的實(shí)用技巧,需要的朋友可以參考下2021-08-08Python?selenium把歌詞評(píng)論做成詞云圖
大家好,本篇文章主要講的是Python?selenium把歌詞評(píng)論做成詞云圖,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01Python編寫memcached啟動(dòng)腳本代碼實(shí)例
這篇文章主要介紹了Python編寫memcached啟動(dòng)腳本代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08