Python을 사용하여 사진에서 이미지 분할을 수행하는 방법
이미지 분할은 컴퓨터 비전 분야에서 일반적으로 사용되는 기술입니다. 각 영역의 픽셀이 비슷한 특성을 갖도록 이미지를 여러 개의 독립적인 이미지 영역으로 나눕니다. 이미지 분할은 인식, 대상 감지, 이미지 처리 및 기타 응용 분야에서 폭넓은 응용 가치를 가지고 있습니다. 이 기사에서는 Python을 사용하여 이미지를 분할하고 코드 예제를 첨부하는 방법을 소개합니다.
먼저 Python의 이미지 처리 라이브러리 Pillow를 설치해야 합니다. Pillow는 이미지를 로드, 처리 및 저장하는 데 도움이 됩니다. 다음 명령을 통해 Pillow를 설치할 수 있습니다.
pip install pillow
Pillow를 설치한 후 이미지 분할 연습을 시작할 수 있습니다. 먼저 필요한 라이브러리를 가져와야 합니다.
from PIL import Image from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt
다음으로 이미지를 로드하고 이를 배열로 변환하는 함수를 정의합니다.
def load_image(image_path): image = Image.open(image_path) return np.array(image)
그런 다음 이미지 분할을 수행하는 함수를 정의합니다.
def image_segmentation(image, num_segments): height, width, _ = image.shape image_flat = image.reshape((-1, 3)) kmeans = KMeans(n_clusters=num_segments, random_state=0).fit(image_flat) labels = kmeans.labels_ image_segmented = np.zeros_like(image_flat) for segment in range(num_segments): image_segmented[labels == segment] = kmeans.cluster_centers_[segment] image_segmented = image_segmented.reshape((height, width, 3)) return image_segmented
위의 코드에서는 KMeans 알고리즘을 사용하여 이미지 픽셀을 클러스터링하고 이미지 분할 영역을 결정합니다. 그런 다음 각 픽셀을 해당 클러스터 중심에 지정하고 이미지 분할 결과를 생성합니다.
마지막으로 이미지 분할 결과를 표시하는 함수를 정의합니다.
def show_image(image): plt.imshow(image.astype(np.uint8)) plt.axis('off') plt.show()
이제 위에서 정의한 함수를 결합하여 이미지 분할 실험을 수행할 수 있습니다. 전체 샘플 코드는 다음과 같습니다.
from PIL import Image from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt def load_image(image_path): image = Image.open(image_path) return np.array(image) def image_segmentation(image, num_segments): height, width, _ = image.shape image_flat = image.reshape((-1, 3)) kmeans = KMeans(n_clusters=num_segments, random_state=0).fit(image_flat) labels = kmeans.labels_ image_segmented = np.zeros_like(image_flat) for segment in range(num_segments): image_segmented[labels == segment] = kmeans.cluster_centers_[segment] image_segmented = image_segmented.reshape((height, width, 3)) return image_segmented def show_image(image): plt.imshow(image.astype(np.uint8)) plt.axis('off') plt.show() image_path = "image.jpg" num_segments = 4 image = load_image(image_path) image_segmented = image_segmentation(image, num_segments) show_image(image_segmented)
위의 예에서는 "image.jpg"라는 이름의 이미지를 로드하고 이를 4개 영역으로 나눴습니다. 마지막으로 이미지 분할 결과를 보여줍니다.
요약하자면, 이 글에서는 Python을 사용하여 이미지에 대한 이미지 분할을 수행하는 방법을 소개합니다. 우리는 Pillow 라이브러리를 사용하여 이미지를 로드 및 저장하고, 이미지 분할을 위한 KMeans 알고리즘을 사용하고, 최종적으로 분할 결과를 표시했습니다. 이 기사가 이미지 분할의 원리와 사례를 이해하는 데 도움이 되기를 바랍니다.
위 내용은 Python을 사용하여 이미지를 분할하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!