91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

opencv resize圖片為正方形尺寸的實現方法

發布時間:2020-10-09 07:30:51 來源:腳本之家 閱讀:215 作者:core! 欄目:開發技術

在深度學習中,模型的輸入size通常是正方形尺寸的,比如300 x 300這樣.直接resize的話,會把圖像拉的變形.通常我們希望resize以后仍然保持圖片的寬高比.

例如:

opencv resize圖片為正方形尺寸的實現方法

如果直接resize到的話:

opencv resize圖片為正方形尺寸的實現方法

而我們希望得到:

opencv resize圖片為正方形尺寸的實現方法

可以利用copyMakeBorder和resize配合達到我們的目的.

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 
  
  #判斷應該按哪個邊做等比縮放
  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()

首先判斷應該用w,h哪個方向的長度做等比縮放,縮放到合適的尺寸后,在用copyMakeBorder對剩余像素進行填充.深度學習中通常用灰度值128進行邊界的填充.以文章開頭的圖片為例,處理后得到的圖片:

opencv resize圖片為正方形尺寸的實現方法

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇州市| 松滋市| 惠水县| 青州市| 鸡西市| 股票| 醴陵市| 泰来县| 拉萨市| 仙居县| 营山县| 涞源县| 湖北省| 花垣县| 城步| 富裕县| 太仓市| 宾阳县| 吴旗县| 积石山| 山东省| 丰都县| 宜州市| 昭通市| 旌德县| 乐亭县| 资溪县| 长治县| 丁青县| 齐河县| 红桥区| 仁怀市| 定兴县| 固始县| 临漳县| 合江县| 故城县| 黄山市| 兴国县| 五指山市| 乐平市|