在 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_NEAREST
,INTER_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 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