본문 바로가기
IT silo

파이썬 OpenCV 이미지 처리 완전정복: 기초부터 실전 예제까지!

by 테크사일로 2025. 7. 1.

파이썬 OpenCV 이미지 처리 완전정복: 기초부터 실전 예제까지!

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

 

파이썬 OpenCV 이미지 처리, 어디서부터 어떻게 시작해야 할지 막막하셨나요? 이 글 하나로 OpenCV의 설치부터 이미지 읽기·저장, 크기 조정, 필터링, 가장자리 검출, 포맷 변환, 텍스트 추가까지 실전 예제와 꿀팁을 완벽하게 정리해드립니다. OpenCV는 데이터 분석, 딥러닝, 컴퓨터 비전, 자동화 등 다양한 분야에서 이미지 처리의 표준 라이브러리입니다.

많은 분들이 "이미지 읽고 저장하는 법은?", "크기 조정, 블러, 에지 검출은 어떻게 하지?", "픽셀값, 채널 분리, ROI, 텍스트 추가까지 한 번에 할 수 있을까?" 등 다양한 고민을 하시죠. 이 글에서 모든 궁금증을 해결하세요!

📋 목차

🔍OpenCV 설치와 이미지 읽기/저장

OpenCV는 pip install opencv-python 명령으로 설치할 수 있습니다.
이미지는 cv2.imread()로 읽고, cv2.imwrite()로 저장할 수 있습니다.

import cv2 img = cv2.imread('image.jpg') cv2.imwrite('result.png', img) 

이미지 타입은 numpy.ndarray이며, shape, dtype, size 등 다양한 속성을 확인할 수 있습니다.

한줄 요약: imread/imwrite로 이미지 입출력 기본 마스터!

📝이미지 크기 조정과 포맷 변환

이미지 크기 변경은 cv2.resize()로 간단히 처리할 수 있습니다.
포맷 변환은 imwrite의 파일 확장자만 바꿔주면 됩니다.

resized = cv2.resize(img, (200, 200)) cv2.imwrite('result.jpg', resized) 
기능 함수 예시
크기 조정 cv2.resize() cv2.resize(img, (w, h))
포맷 변환 cv2.imwrite() cv2.imwrite('image.png', img)

한줄 요약: resize/imwrite로 크기와 포맷 자유자재!

픽셀값·채널·ROI 다루기

OpenCV는 픽셀값 읽기/변경, 채널 분리/합치기, ROI(영역) 추출 등 세밀한 이미지 처리가 가능합니다.

# 픽셀값 읽기/변경 px = img # [B,G,R] img =
채널 분리/합치기
b, g, r = cv2.split(img)
img = cv2.merge((b, g, r))

ROI 추출/복사
roi = img[280:340, 330:390]
img[273:333, 100:160] = roi

한줄 요약: 픽셀, 채널, ROI로 세부 이미지 제어!

🎯이미지 필터링과 블러 효과

이미지 필터링은 노이즈 제거, 경계 강조, 흐림(블러) 등 다양한 효과를 줄 때 사용합니다.
주요 함수:

  1. 평균 블러: cv2.blur(img, (5,5))
  2. 가우시안 블러: cv2.GaussianBlur(img, (5,5), 0)
  3. 샤프닝: cv2.filter2D(img, -1, kernel)
import numpy as np kernel = np.array([[0,-1,0],[-1,5,-1],[0,-1,0]], np.float32) sharp = cv2.filter2D(img, -1, kernel) 

한줄 요약: blur, filter2D로 다양한 이미지 필터링!

반응형

📊가장자리·윤곽선 검출

OpenCV는 Canny, Sobel, Laplacian 등 다양한 에지 검출 알고리즘을 지원합니다.
윤곽선(Contour) 검출로 객체의 경계, 면적, 중심 등도 파악할 수 있습니다.

# Canny 에지 검출 edges = cv2.Canny(img, 100, 200)
윤곽선 검출
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thr = cv2.threshold(gray, 127, 255, 0)
contours, _ = cv2.findContours(thr, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 2)

한줄 요약: Canny/Sobel/Contour로 경계·윤곽선 검출!

텍스트·도형 추가와 시각화

OpenCV는 cv2.putText()로 이미지에 텍스트를 추가할 수 있습니다. 또한 직선, 사각형, 원 등 다양한 도형도 쉽게 그릴 수 있습니다.

# 텍스트 추가 cv2.putText(img, 'OpenCV', (10, 100), cv2.FONT_HERSHEY_SIMPLEX, 2, (255,0,0), 3)
사각형 그리기
cv2.rectangle(img, (50, 50), (150, 150), (0,255,0), 2)

cv2.imshow()로 이미지를 시각화하고, cv2.waitKey(0)으로 창을 닫을 수 있습니다.

한줄 요약: putText, rectangle 등으로 시각화 완성!

💡실전 활용 꿀팁과 주의사항

  • imread, imwrite, resize, filter2D 등 함수는 모두 numpy 배열 기반
  • 이미지의 색상 채널 순서는 BGR(파랑-초록-빨강)임을 주의
  • cv2.imshow()는 Jupyter에서는 plt.imshow()로 대체 가능
  • 이미지 처리 후 반드시 cv2.waitKey(0), cv2.destroyAllWindows()로 창 닫기
  • 고급 기능(객체 탐지, 얼굴 인식, 세그멘테이션 등)도 OpenCV로 확장 가능
핵심 포인트
- imread/imwrite, resize, filter2D 등으로 이미지 처리 기본기 다지기
- 픽셀, 채널, ROI, 필터링, 에지 검출 등 실전 예제 활용
- 텍스트, 도형 추가, 시각화까지 한 번에 완성!

한줄 요약: OpenCV로 이미지 처리의 모든 것을 경험하세요!

  • imread/imwrite, resize, filter2D 등으로 이미지 처리 기본기 다지기
  • 픽셀, 채널, ROI, 필터링, 에지 검출 등 실전 예제 활용
  • 텍스트, 도형 추가, 시각화까지 한 번에 완성!

도움이 되셨다면 공감♥ 눌러주세요!

파이썬 OpenCV 이미지 처리, 이제 완벽하게 이해하셨나요? 다음 글에서는 객체 탐지, 얼굴 인식, 이미지 세그멘테이션 등 더 깊이 있는 컴퓨터 비전 실전 예제를 다룰 예정입니다. 궁금한 점이나 추가 질문은 댓글로 남겨주세요! 구독과 알림 설정도 잊지 마세요.

#OpenCV #파이썬이미지처리 #이미지필터링 #크기조정 #픽셀값 #에지검출 #포맷변환 #putText #컴퓨터비전 #파이썬2025

반응형