python 等比例缩放图片 自写
生活随笔
收集整理的這篇文章主要介紹了
python 等比例缩放图片 自写
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Python等比例縮放圖片
使用了 OpenCV 進(jìn)行圖片的讀取
輸入:利用 cv2.imread 函數(shù)讀取的 Mat 矩陣
輸出:縮放后的 Mat 矩陣(示例代碼為縮放到 512x512 大小,也可自行設(shè)定大小)
待處理圖片分為兩種類型:寬 > 高(Width > Height) 或 寬 < 高(Width < Height)
若是 寬 > 高:
那么縮放后多余出來(lái)的寬度,從中間截取 512 個(gè)像素。
若是 寬 < 高:
那么縮放后寬度不夠,兩側(cè)填充黑色補(bǔ)齊到寬為 512 個(gè)像素。
示例代碼:
def imgToSize(img):''' imgToSize()# ----------------------------------------# Function: 將圖像等比例縮放到 512x512 大小# 根據(jù)圖像長(zhǎng)寬不同分為兩種縮放方式# Param img: 圖像 Mat# Return img: 返回縮放后的圖片# Example: img = imgToSize(img)# ----------------------------------------'''# 測(cè)試點(diǎn)# 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))# 測(cè)試點(diǎn)# cv2.imshow('resizeImg', img)# 如果圖片屬于 Width<Height,那么寬度將達(dá)不到 512if imgWidth >= imgHeight:# 正常截取圖像w1 = (zoomWidth-512)//2# 圖像坐標(biāo)為先 Height,后 Widthimg = img[0:512, w1:w1+512]else:# 如果寬度小于 512,那么對(duì)兩側(cè)邊界填充為全黑色# 根據(jù)圖像的邊界的像素值,向外擴(kuò)充圖片,每個(gè)方向擴(kuò)充50個(gè)像素,常數(shù)填充:# 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# 避免余數(shù)取不到right = left+1img = cv2.copyMakeBorder(img, 0,0,left,right, cv2.BORDER_CONSTANT, value=[0,0,0])img = img[0:512, 0:512]# 測(cè)試點(diǎn)# cv2.imshow('size512', img)return img總結(jié)
以上是生活随笔為你收集整理的python 等比例缩放图片 自写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python class 类中 __in
- 下一篇: websocket python爬虫_p