본문 바로가기
■ 칼퇴를 위한 파이썬 : 사례

파이썬으로 이미지 처리하기: 이미지 합성

by 포탈메이커 2023. 7. 17.

파이썬으로 이미지 처리하기: 이미지 합성

이미지 합성은 이미지 처리의 중요한 기술 중 하나로, 여러 개의 이미지를 합쳐서 새로운 이미지를 생성하는 작업을 말합니다. 파이썬은 이미지 처리에 강력한 라이브러리를 제공하므로, 간단한 코드 몇 줄만으로도 이미지 합성을 할 수 있습니다.

1. PIL 라이브러리 설치하기

이미지 합성을 위해 먼저 Pillow 라이브러리를 설치해야 합니다. Pillow는 파이썬에서 이미지 처리를 위한 대표적인 라이브러리로 알려져 있습니다. 다음 명령어를 사용하여 Pillow를 설치할 수 있습니다.

pip install Pillow

2. 이미지 불러오기

Pillow 라이브러리는 이미지를 다루기 위한 Image 클래스를 제공합니다. 먼저, 합성할 이미지들을 불러와야 합니다. 이미지를 불러오기 위해서는 Image 클래스의 open 메서드를 사용합니다.

```python from PIL import Image

image1 = Image.open("image1.jpg") image2 = Image.open("image2.jpg") ```

위 코드에서 image1.jpgimage2.jpg는 각각 합성할 이미지의 파일 경로입니다. 두 이미지를 Image 클래스의 객체로 생성한 후에는 이후 합성 작업에서 사용할 수 있습니다.

3. 이미지 합성하기

이미지 합성은 Image 클래스의 paste 메서드를 사용하여 수행할 수 있습니다. paste 메서드는 이미지를 합성할 위치와 함께 다른 이미지를 붙여넣는 기능을 제공합니다.

python result = Image.new("RGB", (width, height)) result.paste(image1, (0, 0)) result.paste(image2, (width // 2, 0))

위 코드에서 Image.new 메서드는 합성 결과 이미지의 크기를 정의하는 역할을 합니다. widthheight는 합성할 이미지의 가로와 세로 크기를 나타냅니다. paste 메서드는 첫 번째 인자로 합성할 이미지를 받고, 두 번째 인자로 합성할 위치를 받습니다. width // 2는 가로 크기의 절반인 위치를 나타내므로, image2image1의 오른쪽 절반에 합성된 것과 같습니다.

4. 이미지 저장하기

이미지를 합성한 후에는 필요에 따라 이미지를 저장할 수 있습니다. Image 클래스의 save 메서드를 사용하여 이미지를 특정 경로에 저장할 수 있습니다.

python result.save("result.jpg")

위 코드에서 "result.jpg"는 합성된 이미지의 저장 경로와 파일 이름입니다. 이미지를 저장하는 방식은 파일 확장자에 따라 달라질 수 있습니다. JPEG 파일로 저장하기 위해서는 .jpg 확장자를 사용하면 됩니다.

5. 예제

다음은 이미지 합성을 수행하는 예제 코드입니다. 이미지 합성에 사용할 이미지 파일들은 현재 작업 디렉토리에 위치해야 합니다.

```python from PIL import Image

이미지 불러오기

image1 = Image.open("image1.jpg") image2 = Image.open("image2.jpg")

이미지 합성하기

width = image1.width + image2.width height = max(image1.height, image2.height) result = Image.new("RGB", (width, height)) result.paste(image1, (0, 0)) result.paste(image2, (image1.width, 0))

이미지 저장하기

result.save("result.jpg") ```

위 예제 코드에서는 image1.jpgimage2.jpg를 좌우로 합성한 후에, result.jpg로 저장한 결과 이미지를 생성합니다.

마치며

이미지 합성은 파이썬을 이용해 간단하게 수행할 수 있는 이미지 처리 기술 중 하나입니다. Pillow 라이브러리의 Image 클래스를 활용하면 손쉽게 이미지 합성을 구현할 수 있습니다. 위 예제 코드를 응용하여 여러 이미지를 합성하는 등 다양한 이미지 합성 기능을 구현해보세요. Happy coding!