IT/Python

[Python] OpenCV를 이용한 이미지 처리 기초

멋진 선배 2025. 1. 21. 12:44
반응형

OpenCV를 사용하여 이미지 처리의 기초를 알아보겠습니다. 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는 이외에도 많은 고급 기능을 제공하며, 컴퓨터 비전 프로젝트에 필수적인 도구입니다. 이미지 처리의 기본을 익히셨다면, 이제 객체 검출, 얼굴 인식 등 복잡한 작업에 도전해 보세요.

반응형