본문 바로가기
파이썬

파이썬으로 이미지 불러오기, 표시하기, 저장하기: 초보자를 위한 완벽 가이드

by 마이케이 2024. 11. 20.
반응형

파이썬 이미지 처리
파이썬 이미지 처리

파이썬으로 이미지 불러오기, 표시하기, 저장하기: 초보자를 위한 완벽 가이드

사진이나 그림과 같은 이미지를 다루는 작업은 다양한 분야에서 필수적이에요. 웹 개발, 컴퓨터 비전, 이미지 편집 등 많은 작업에서 이미지 처리가 중요한 부분을 차지하죠. 파이썬은 이러한 이미지 처리를 위한 강력한 도구를 제공하는데요, 오늘은 파이썬을 이용해서 이미지를 불러오고, 화면에 표시하고, 저장하는 방법을 자세히 알아보도록 하겠습니다! 어렵지 않으니, 차근차근 따라와 보세요~!


1, 필요한 라이브러리 설치하기

이미지 처리를 위해서는 몇 가지 라이브러리가 필요해요. 가장 널리 사용되는 라이브러리는 Pillow(PIL)와 OpenCV 두 가지인데요, 각 라이브러리의 특징과 장단점을 비교해보고 상황에 맞게 선택하는 것이 좋아요.

1.1 Pillow (PIL) 설치하기

Pillow는 파이썬에서 이미지를 처리하기 위한 가장 기본적인 라이브러리입니다. 다양한 이미지 포맷을 지원하고 사용하기 쉬운 API를 제공해서 초보자에게도 친숙해요. 설치는 pip 명령어를 사용하면 간단하게 할 수 있습니다.

bash pip install Pillow

1.2 OpenCV 설치하기

OpenCV는 컴퓨터 비전 분야에서 널리 사용되는 강력한 라이브러리입니다. 이미지 처리뿐만 아니라 객체 감지, 영상 분석 등 다양한 기능을 제공하지만, Pillow에 비해 사용법이 조금 더 복잡할 수 있어요.

bash pip install opencv-python


2, Pillow를 이용한 이미지 처리

Pillow를 사용하여 이미지를 불러오고, 표시하고, 저장하는 방법을 알아볼게요. 간단한 예제를 통해 쉽게 이해할 수 있도록 설명해 드릴게요.

2.1 이미지 불러오기

python from PIL import Image

try: img = Image.open("my_image.jpg") # 이미지 파일 경로를 입력하세요. print(f"이미지 사이즈: {img.size}") # 이미지 크기 출력 print(f"이미지 모드: {img.mode}") # 이미지 모드 출력 (RGB, RGBA 등) except FileNotFoundError: print("파일을 찾을 수 없습니다.") except Exception as e: print(f"오류 발생: {e}")

이 코드는 my_image.jpg 파일을 불러와서 이미지의 크기와 모드를 출력하고, 파일이 없거나 오류가 발생하면 적절한 메시지를 출력합니다. 여러분의 이미지 파일 경로로 "my_image.jpg" 를 수정해야 해요.

2.2 이미지 표시하기

Pillow만으로는 이미지를 직접적으로 화면에 표시할 수 없어요. 따라서, Matplotlib 라이브러리를 함께 사용해야 합니다. Matplotlib는 데이터 시각화 라이브러리이지만 이미지 표시에도 유용하게 쓰여요.

python import matplotlib.pyplot as plt from PIL import Image

img = Image.open("my_image.jpg") plt.imshow(img) plt.show()

이 코드는 불러온 이미지를 Matplotlib를 사용하여 화면에 표시합니다. plt.show() 함수를 호출하면 이미지가 표시되고 화면이 닫힐때까지 기다려요.

2.3 이미지 저장하기

이미지 수정 후 저장하는 방법은 다음과 같습니다.

python img.save("modified_image.png") # 저장할 파일 이름과 확장자를 지정하세요.

이 코드는 수정된 이미지를 "modified_image.png"라는 이름으로 저장합니다. 다른 확장자 (예: jpg, jpeg, gif)를 사용할 수도 있습니다.


3, OpenCV를 이용한 이미지 처리

OpenCV는 Pillow보다 훨씬 더 강력한 기능을 제공하는 라이브러리예요. 특히 컴퓨터 비전 관련 작업에 매우 유용합니다.

3.1 이미지 불러오기

python import cv2

img = cv2.imread("my_image.jpg") if img is None: print("이미지를 불러올 수 없습니다.") else: print(f"이미지 크기: {img.shape}") # 이미지 크기 출력 (높이, 너비, 채널)

OpenCV는 이미지를 NumPy 배열로 불러옵니다. img.shape은 이미지의 크기 (높이, 너비, 채널 수)를 반환해요.

3.2 이미지 표시하기

python cv2.imshow("Image", img) cv2.waitKey(0) # 키를 누를 때까지 기다림 cv2.destroyAllWindows() # 창 닫기

cv2.imshow() 함수는 이미지를 표시하고, cv2.waitKey(0)은 키 입력을 기다립니다. cv2.destroyAllWindows()는 창을 닫습니다.

3.3 이미지 저장하기

python cv2.imwrite("modified_image.jpg", img)

cv2.imwrite() 함수는 이미지를 지정된 경로와 이름으로 저장합니다.


4, Pillow vs. OpenCV: 어떤 라이브러리를 사용해야 할까요?

라이브러리 장점 단점 적합한 용도
Pillow 간편한 사용법, 다양한 이미지 포맷 지원 고급 기능 부족 간단한 이미지 처리, 웹 개발 등
OpenCV 강력한 기능, 컴퓨터 비전 기능 제공 사용법이 다소 복잡할 수 있음 컴퓨터 비전, 이미지 분석, 고급 이미지 처리 등


결론적으로, 간단한 이미지 처리 작업에는 Pillow를, 더욱 강력한 기능과 컴퓨터 비전 기능이 필요한 경우에는 OpenCV를 사용하는 것이 효율적입니다.


5, 추가 팁

  • 이미지 크기 조절: Pillow의 resize() 메서드나 OpenCV의 resize() 함수를 사용하여 이미지 크기를 조절할 수 있습니다.
  • 이미지 회전: Pillow의 rotate() 메서드나 OpenCV의 warpAffine() 함수를 사용하여 이미지를 회전할 수 있습니다.
  • 이미지 색상 변경: Pillow와 OpenCV 모두 이미지 색상을 변경하는 다양한 기능을 제공합니다.
  • 이미지 자르기: crop() 메서드를 사용하여 이미지의 특정 부분을 잘라낼 수 있습니다.

파이썬을 이용한 이미지 처리 방법을 익히면 여러분의 작업 효율성을 크게 높일 수 있습니다. 지금 바로 코드를 작성하고 이미지 처리의 세계를 탐험해 보세요! 궁금한 점은 언제든지 댓글로 남겨주세요~!

반응형