python 等比例缩放图片 自写
生活随笔
收集整理的這篇文章主要介紹了
python 等比例缩放图片 自写
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python等比例縮放圖片
使用了 OpenCV 進行圖片的讀取
輸入:利用 cv2.imread 函數讀取的 Mat 矩陣
輸出:縮放后的 Mat 矩陣(示例代碼為縮放到 512x512 大小,也可自行設定大小)
待處理圖片分為兩種類型:寬 > 高(Width > Height) 或 寬 < 高(Width < Height)
若是 寬 > 高:
那么縮放后多余出來的寬度,從中間截取 512 個像素。
若是 寬 < 高:
那么縮放后寬度不夠,兩側填充黑色補齊到寬為 512 個像素。
示例代碼:
def imgToSize(img):''' imgToSize()# ----------------------------------------# Function: 將圖像等比例縮放到 512x512 大小# 根據圖像長寬不同分為兩種縮放方式# Param img: 圖像 Mat# Return img: 返回縮放后的圖片# Example: img = imgToSize(img)# ----------------------------------------'''# 測試點# cv2.imshow('metaImg.jpg', img)imgHeight, imgWidth = img.shape[:2]# cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])# src 原圖像,dsize 輸出圖像的大小,# img = cv2.resize(img, (512,512))zoomHeight = 512zoomWidth = int(imgWidth*512/imgHeight)img = cv2.resize(img, (zoomWidth,zoomHeight))# 測試點# cv2.imshow('resizeImg', img)# 如果圖片屬于 Width<Height,那么寬度將達不到 512if imgWidth >= imgHeight:# 正常截取圖像w1 = (zoomWidth-512)//2# 圖像坐標為先 Height,后 Widthimg = img[0:512, w1:w1+512]else:# 如果寬度小于 512,那么對兩側邊界填充為全黑色# 根據圖像的邊界的像素值,向外擴充圖片,每個方向擴充50個像素,常數填充:# dst = cv2.copyMakeBorder(src, top, bottom, left, right, borderType[, dst[, value]])# dst = cv2.copyMakeBorder(img,50,50,50,50, cv2.BORDER_CONSTANT,value=[0,255,0])# 需要填充的寬度為 512-zoomWidthleft = (512-zoomWidth)//2# 避免余數取不到right = left+1img = cv2.copyMakeBorder(img, 0,0,left,right, cv2.BORDER_CONSTANT, value=[0,0,0])img = img[0:512, 0:512]# 測試點# cv2.imshow('size512', img)return img總結
以上是生活随笔為你收集整理的python 等比例缩放图片 自写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python class 类中 __in
- 下一篇: PyTorch 训练可视化教程 visd