Python에서 이미지 크기 조정

Manav Narula 2023년1월30일
  1. opencv 모듈을 사용하여 Python에서 이미지 크기 조정
  2. scikit-image 모듈을 사용하여 Python에서 이미지 크기 조정
  3. Python에서 이미지 크기를 조정하는 사용자 정의 함수 만들기
Python에서 이미지 크기 조정

이 튜토리얼에서는 이미지 크기를 조정하는 방법에 대해 설명합니다.

기본적으로 이미지를 나타내는 numpy 배열의 크기를 조정합니다. 이를 달성하기위한 numpy 모듈에는 직접적인 기능이 없습니다. resize()함수는 축을 무시하고 보간이나 외삽을 적용하지 않기 때문에 직접 사용할 수 없습니다.

크기를 조정 한 후이 크기 조정 된 배열을 내보내고 이미지로 저장할 수 있습니다. 이것은 아래에서 설명하는 모든 방법에 공통입니다.

opencv 모듈을 사용하여 Python에서 이미지 크기 조정

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등과 같은 여러 가지 방법으로 이미지 크기를 조정할 수 있습니다. 이 매개 변수를 선택하는 가장 좋은 방법은 없습니다. 상황에 따라 다릅니다.

scikit-image 모듈을 사용하여 Python에서 이미지 크기 조정

이 모듈은 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