OpenCV(Open Source Computer Vision)는 컴퓨터 비전 및 이미지 처리 작업을 위한 강력한 라이브러리입니다. Python과 함께 사용하면 이미지 분석, 필터링, 객체 검출 등 다양한 이미지 처리 작업을 쉽게 수행할 수 있습니다. 이 글에서는 OpenCV의 기본적인 사용법과 주요 기능을 소개하고, 간단한 예제를 통해 실습해보겠습니다.
목차
- OpenCV란?
- OpenCV 설치 방법
- 이미지 읽기 및 표시
- 이미지 변환 및 조작
- 이미지 필터링
- 에지 검출
- 객체 검출 간단 예제
1. OpenCV 란?
OpenCV는 이미지 처리와 컴퓨터 비전 작업을 위한 오픈소스 라이브러리입니다. 다양한 프로그래밍 언어를 지원하며, Python과 함께 사용하면 이미지 처리 및 분석 작업을 간단하게 수행할 수 있습니다.
OpenCV 주요 기능
- 이미지 읽기, 쓰기, 변환
- 필터링 및 이미지 변환
- 에지 검출 및 객체 검출
- 얼굴 인식, 동영상 처리 등 고급기능
2. OpenCV 설치 방법
Python에서 OpenCV를 사용하려면 opencv-python패키지를 설치해야 합니다. 터미널(또는 명령 프롬프트)에서 다음 명령어를 실행하세요
pip install opencv-python
또한 일부 고급 기능 (예: 이미지와 동영상 파일 압축/해제)을 사용하려면 opencv-contrib-python 패키지도 설치할 수 있습니다.
pip install opencv-contrib-python
설치 완료 후 Python에서 OpenCV를 불러올 수 있습니다.
import cv2
print(cv2.__version__)
3. 이미지 읽기 및 표시
OpenCV를 사용하면 이미지를 간단히 읽고 화면에 표시할 수 있습니다.
이미지 읽기
import cv2
# 이미지 파일 읽기
image = cv2.imread('image.jpg')
# 이미지 정보 확인
print(image.shape) # (높이, 너비, 채널 수)
이미지 읽기
# 이미지를 창에 표시
cv2.imshow('Image', image)
# 키 입력 대기 후 창 닫기
cv2.waitKey(0)
cv2.destroyAllWindows()
흑백 이미지로 읽기
gray_image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
4. 이미지 변환 및 조작
OpenCV에서는 다양한 방식으로 이미지를 변환하거나 조작할 수 있습니다.
이미지 크기 조정
resized = cv2.resize(image, (200, 200))
cv2.imshow('Resized Image', resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
이미지 회전
(h, w) = image.shape[:2]
center = (w // 2, h // 2)
matrix = cv2.getRotationMatrix2D(center, 45, 1.0)
rotated = cv2.warpAffine(image, matrix, (w, h))
cv2.imshow('Rotated Image', rotated)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. 이미지 필터링
OpenCV를 사용하면 간단한 필터를 적용하여 이미지의 품질을 개선하거나 특정 효과를 줄 수 있습니다.
블러링(Blur)
blurred = cv2.GaussianBlur(image, (15, 15), 0)
cv2.imshow('Blurred Image', blurred)
cv2.waitKey(0)
cv2.destroyAllWindows()
엣지 강화
sharp_kernel = [[0, -1, 0], [-1, 5, -1], [0, -1, 0]]
sharpened = cv2.filter2D(image, -1, kernel=sharp_kernel)
cv2.imshow('Sharpened Image', sharpened)
cv2.waitKey(0)
cv2.destroyAllWindows()
6. 에지 검출
에지 검출은 이미지 처리에서 중요한 작접 중 하나로, 이미지의 윤곽선을 추출합니다.
Canny 에지 검출
edges = cv2.Canny(image, 100, 200)
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
7. 객체 검출 간단 예제
Haar Cascade 분류기를 사용하여 얼굴 검출을 수행하는 간단한 예제를 소개합니다.
# Haar Cascade 파일 경로
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 이미지 읽기
image = cv2.imread('face.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 얼굴 검출
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
# 얼굴 영역 표시
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 결과 출력
cv2.imshow('Detected Faces', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
참고 사항
- 출처 : 본 글의 코드는 OpenCV 공식 문서와 Python 학습 자료를 참고하여 작성되었습니다.
'프로그래밍' 카테고리의 다른 글
Java 17의 주요 기능 및 변화 (0) | 2025.01.12 |
---|---|
CSS의 기초 : 웹 디자인의 필수 요수 (0) | 2025.01.11 |
Java 람다식(Lambda Expressions) (0) | 2025.01.04 |
Python Pandas로 데이터 분석 기초 (1) | 2025.01.02 |
Java에서 정규 표현식 (Regex) 활용법 (0) | 2025.01.01 |