opencv resize圖片為正方形尺寸的實(shí)現(xiàn)方法
在深度學(xué)習(xí)中,模型的輸入size通常是正方形尺寸的,比如300 x 300這樣.直接resize的話,會(huì)把圖像拉的變形.通常我們希望resize以后仍然保持圖片的寬高比.
例如:

如果直接resize到的話:

而我們希望得到:

可以利用copyMakeBorder和resize配合達(dá)到我們的目的.
import cv2
def resize_keep_aspectratio(image_src,dst_size):
src_h,src_w = image_src.shape[:2]
print(src_h,src_w)
dst_h,dst_w = dst_size
#判斷應(yīng)該按哪個(gè)邊做等比縮放
h = dst_w * (float(src_h)/src_w)#按照w做等比縮放
w = dst_h * (float(src_w)/src_h)#按照h做等比縮放
h = int(h)
w = int(w)
if h <= dst_h:
image_dst = cv2.resize(image_src,(dst_w,int(h)))
else:
image_dst = cv2.resize(image_src,(int(w),dst_h))
h_,w_ = image_dst.shape[:2]
print(h_,w_)
top = int((dst_h - h_) / 2);
down = int((dst_h - h_+1) / 2);
left = int((dst_w - w_) / 2);
right = int((dst_w - w_+1) / 2);
value = [0,0,0]
borderType = cv2.BORDER_CONSTANT
print(top, down, left, right)
image_dst = cv2.copyMakeBorder(image_dst, top, down, left, right, borderType, None, value)
return image_dst
image_src = cv2.imread("/home/sc/disk/data/bdd-data/bdd_data/bdd100k/images/10k/train/0a0a0b1a-7c39d841.jpg")
dst_size = (720,720)
image = resize_keep_aspectratio(image_src,dst_size)
cv2.imshow("aaa",image)
print(image.shape)
if 27 == cv2.waitKey():
cv2.destroyAllWindows()
首先判斷應(yīng)該用w,h哪個(gè)方向的長(zhǎng)度做等比縮放,縮放到合適的尺寸后,在用copyMakeBorder對(duì)剩余像素進(jìn)行填充.深度學(xué)習(xí)中通常用灰度值128進(jìn)行邊界的填充.以文章開(kāi)頭的圖片為例,處理后得到的圖片:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用urllib模塊對(duì)URL網(wǎng)址中的中文編碼與解碼實(shí)例詳解
這篇文章主要介紹了Python使用urllib模塊對(duì)URL網(wǎng)址中的中文編碼與解碼(Python使用urllib模塊對(duì)URL編碼與解碼)實(shí)例詳解,需要的朋友可以參考下2020-02-02
使用Python實(shí)現(xiàn)圖片轉(zhuǎn)ICO格式
這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個(gè)基于PyQt5的用于將圖像文件轉(zhuǎn)換為ICO格式GUI應(yīng)用程序,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-01-01
Python3實(shí)現(xiàn)發(fā)送郵件和發(fā)送短信驗(yàn)證碼功能
這篇文章主要介紹了Python3實(shí)現(xiàn)發(fā)送郵件和發(fā)送短信驗(yàn)證碼功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
Python使用爬蟲爬取靜態(tài)網(wǎng)頁(yè)圖片的方法詳解
這篇文章主要介紹了Python使用爬蟲爬取靜態(tài)網(wǎng)頁(yè)圖片的方法,較為詳細(xì)的說(shuō)明了爬蟲的原理,并結(jié)合實(shí)例形式分析了Python使用爬蟲來(lái)爬取靜態(tài)網(wǎng)頁(yè)圖片的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
對(duì)python numpy.array插入一行或一列的方法詳解
今天小編就為大家分享一篇對(duì)python numpy.array插入一行或一列的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python(Django)項(xiàng)目與Apache的管理交互的方法
這篇文章主要介紹了Python(Django)項(xiàng)目與Apache的管理交互的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Python接口自動(dòng)化之淺析requests模塊post請(qǐng)求
這篇文章Python接口自動(dòng)化之淺析requests模塊post請(qǐng)求,以下主要介紹requests模塊中的post請(qǐng)求的使用,post源碼,data、json參數(shù)應(yīng)用場(chǎng)景及實(shí)戰(zhàn)2021-08-08

