在 Python 中調整影象大小

Manav Narula 2023年1月30日
  1. 在 Python 中使用 opencv 模組來調整影象大小
  2. 在 Python 中使用 scikit-image 模組調整影象大小
  3. 在 Python 中建立使用者定義的函式以調整影象大小
在 Python 中調整影象大小

在本教程中,我們將討論如何調整影象大小。

本質上,我們將調整代表影象的 numpy 陣列的大小。numpy 模組中沒有直接功能可以實現此目的。我們不能直接使用 resize() 函式,因為它忽略了軸並且不應用插值或外推。

請注意,調整大小後,我們可以匯出此調整大小的陣列並將其另存為影象。這是下面討論的所有方法的共同點

在 Python 中使用 opencv 模組來調整影象大小

OpenCV 模組廣泛用於 Python 中的影象處理和計算機視覺。要調整影象大小,我們將首先使用 imread() 函式讀取影象,然後使用 resize() 函式調整影象大小,如下所示。

import cv2
import numpy as np

img = cv2.imread("filename.jpeg")
res = cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)

imread() 返回一個儲存影象的陣列。我們使用 resize() 函式調整它的大小。這裡的一個重要方面是 interpolation 引數,該引數實際上告訴如何調整影象的大小。調整影象大小的方法有多種,例如 INTER_NEARESTINTER_LINEAR 等。沒有選擇此引數的最佳方法。情況因情況而異。

在 Python 中使用 scikit-image 模組調整影象大小

該模組基於 numpy 庫構建,並具有 resize() 函式,可以有效地調整影象大小。它可以在各種通道上工作,同時可以處理插值,抗鋸齒等問題。

以下程式碼顯示瞭如何使用此函式。

from skimage.transform import resize
import matplotlib.pyplot as plt

im = plt.imread("filename.jpeg")
res = resize(im, (140, 54))

請注意,我們使用 matplotlib.pyplot.imread() 函式以上述方法讀取影象。可以用你喜歡的任何方法代替它。

在 Python 中建立使用者定義的函式以調整影象大小

我們還可以建立自己的函式以在 Python 中實現大小調整。應當注意,該方法是基本的大小調整功能,獨立於任何庫,並且不會執行插值,抗鋸齒,如上述方法一樣。

以下程式碼演示了此函式。

import matplotlib.pyplot as plt


def scale(im, nR, nC):
    number_rows = len(im)  # source number of rows
    number_columns = len(im[0])  # source number of columns
    return [
        [im[int(number_rows * r / nR)][int(number_columns * c / nC)] for c in range(nC)]
        for r in range(nR)
    ]


im = plt.imread("filename.jpeg")
res = scale(im, 30, 30)
作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相關文章 - Python Image