iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
佛心分享-IT 人自學之術

OpwnCV影像處理新手村系列 第 6

🚀 DAY 6:圖片尺寸調整與比例縮放|resize、scale、保持比例

  • 分享至 

  • xImage
  •  

今天我們來學習如何調整圖片大小,這在影像處理中非常常見,例如縮小圖片以加快運算速度,或將不同大小的圖片統一尺寸。


🖼️ 測試圖片準備

和前幾天一樣,準備一張彩色圖片(image.jpg)放在同一資料夾:

import cv2

img = cv2.imread('image.jpg')

為了讓圖片停留讓我們可以觀察,記得最後要加上這段。

cv2.waitKey()
cv2.destroyAllWindows()

圖片尺寸調整(cv2.resize)

先介紹一下 cv2.resize() 函數語法:

cv2.resize(src, dsize, fx=..., fy=..., interpolation=...)
  • src:輸入影像
  • dsize:目標大小 (width, height),如果指定了此參數,fx 和 fy 將被忽略
  • fx、fy:寬度和高度的縮放因子(比例)
  • interpolation:插值方法(可選)

📏 調整圖片尺寸

使用 cv2.resize() 調整圖片大小範例:

print("圖片尺寸:", img.shape)
resized = cv2.resize(img, (500, 150))  # 指定新尺寸 (寬, 高)
cv2.imshow("My Image", img)
cv2.imshow('Resized', resized)

此範例中,我們先用 img.shape 查看圖片尺寸,假設輸出是 (300, 400, 3),
代表原圖尺寸是高度 300 像素,寬度 400 像素,有 3 個通道(BGR)。
範例中將圖片尺寸改成寬 500 像素、高 150 像素,並分別顯示原圖與調整後圖片。

圖片示意如下:

https://ithelp.ithome.com.tw/upload/images/20250907/2012948218VuaK6YnU.png

可見直接調整尺寸可能會造成圖片變形和失真。
你也可以將滑鼠移到圖片右下角(黃圈位置),透過座標查看實際尺寸變化。


🔄 按比例縮放

若要按比例縮放圖片,可以利用 fx 與 fy 參數:

scaled_smaller = cv2.resize(img, None, fx=0.5, fy=0.5)  # 寬、高各縮小一半
scaled_bigger = cv2.resize(img, None, fx=2.0, fy=2.0)  # 寬、高各放大一倍
scaled_other = cv2.resize(img, None, fx=0.5, fy=2.0)  # 寬縮小一半,高放大一倍

cv2.imshow("My Image", img)
cv2.imshow('Scaled Smaller', scaled_smaller)
cv2.imshow('Scaled Bigger', scaled_bigger)
cv2.imshow('Scaled Other', scaled_other)

此處第二個參數 None 表示不指定明確尺寸,OpenCV 會根據 fx 和 fy 自動縮放。
按比例縮放能避免圖片變形,保持寬高比。

縮放後的圖片示意:

https://ithelp.ithome.com.tw/upload/images/20250907/20129482S0yknSgeck.png


📌 今日結語

  • 使用 cv2.resize(img, (w, h)) 可以指定目標尺寸調整圖片大小。
  • 使用 cv2.resize(img, None, fx, fy) 可以根據比例縮放圖片尺寸。
  • 調整圖片大小時,要注意避免造成圖片失真或變形。

掌握圖片尺寸調整與縮放是影像前處理的重要環節,對後續分析與處理都有幫助!


上一篇
🚀 DAY 5:拆分色彩通道|BGR 分離與顯示
下一篇
🚀 DAY 7:圖片翻轉與旋轉|flip、rotate
系列文
OpwnCV影像處理新手村7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言