OpenCV를 사용하여 이미지 처리의 기초를 알아보겠습니다. OpenCV는 다양한 이미지 처리 기능을 제공하여 머신러닝과 컴퓨터 비전 프로젝트에 필수적인 도구 합니다.

OpenCV 설치 및 기본 설정
먼저, OpenCV를 설치해야 합니다. 파이썬 환경에서는 다음 명령어로 간단히 설치할 수 있습니다.
pip install opencv-python
설치가 완료 되면 다음과 같이 OpenCV를 임포트 하고 버전을 확인할 수 있습니다.
import cv2
print(cv2.__version__)
이미지 읽기, 표시, 저장하기
OpenCV에서 이미지를 다루는 기본적인 작업부터 시작해봅시다.
이미지 읽기
image = cv2.imread('sample.jpg', cv2.IMREAD_COLOR)
이미지 표시하기
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
'cv2.imshow()'로 이미지를 화면에 표시하고, 'cv2.waitKey(0)'로 키 입력을 기다립니다. 마지막으로 'cv.destroyAllWindows()'로 모든 창을 닫습니다.
이미지 저장하기
cv2.imwrite('output.jpg', image)
'cv2.imwrite()' 함수로 이미지를 파일로 저장할 수 있습니다.
기본적인 이미지 처리
이미지 크기 조정
resized = cv2.resize(image, (300, 200))
'cv2.resize()' 함수를 사용하여 이미지 크기를 조정할 수 있습니다.
이미지 회전
rows, cols = image.shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), 90, 1)
rotated = cv2.warpAffine(image, M, (cols, rows))
이미지를 회전시키려 켠 회전 행렬을 생성한 후 'cv2.warpAffine()' 함수를 사용합니다.
이미지 자르기
cropped = image[50:200, 100:300]
NumPy 배열 슬라이싱을 사용하여 이미지의 특정 영역을 쉽게 잘라낼 수 있습니다.
색상 공간 변환
OpenCV에서는 다양한 색상 공간 변환을 지원합니다. 가장 흔히 사용되는 것은 BGR에서 그레이스케일로의 변환입니다.
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
이미지 블러링
이미지 블러 효과를 적용하는 것은 노이즈 제거나 edge detection 전 전처리 단계로 자주 사용됩니다.
blurred = cv2.GaussianBlur(image, (5, 5), 0)
'cv2.GaussianBlur()' 함수로 가우시안 블러를 적용할 수 있습니다.
엣지 검출
Canny 엣지 거물은 이미지에서 엣지를 찾는 인기 있는 알고리즘입니다.
edges = cv2.Canny(gray, 100, 200)
이미지 도형 그리기
OpenCV는 이미지에 다양한 도형을 그릴 수 있는 함수를 제공합니다.
cv2.line(image, (0, 0), (100, 100), (255, 0, 0), 2)
cv2.rectangle(image, (50, 50), (150, 150), (0, 255, 0), 2)
cv2.circle(image, (100, 100), 50, (0, 0, 255), -1)
이 코드는 각각 서, 사각형, 원을 그립니다.
이미지 임계값 처리
임계값 처리는 이미지를 이진화 하는데 사용됩니다.
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
'cv2.threshhold()' 함수로 간단한 임계값 처리를 할 수 있습니다.
마무리
이상으로 OpenCV를 이용한 이미지 처리 기초에 대해 알아보았습니다. OpenCV는 이외에도 많은 고급 기능을 제공하며, 컴퓨터 비전 프로젝트에 필수적인 도구입니다. 이미지 처리의 기본을 익히셨다면, 이제 객체 검출, 얼굴 인식 등 복잡한 작업에 도전해 보세요.
'IT > Python' 카테고리의 다른 글
[Python] 파이썬으로 날씨 데이터 수집 및 분석하기 (0) | 2025.01.22 |
---|---|
[Python] 파이썬을 이용한 주식 데이터 분석 (0) | 2025.01.21 |
[Python] 파이썬으로 간단한 챗봇 만들기 (0) | 2025.01.21 |
[Python] 자연어 처리 기초: NLTK 라이브러리 활용하기 (0) | 2025.01.20 |
[Python] TensorFlow를 이용한 딥러닝 모델 구현하기 (0) | 2025.01.20 |