Notice
Recent Posts
Recent Comments
Link
코드 여행 일기
OpenCV란 무엇인가? 본문
728x90
반응형
OpenCV(Open Source Computer Vision)는 컴퓨터 비전 및 이미지 처리 작업을 위한 오픈소스 라이브러리입니다.
주로 Python, C++, Java 등을 지원하며, 이미지 및 영상 데이터를 다루기 위한 강력한 도구로 널리 사용되고 있습니다.
OpenCV 주요 특징
- 다양한 플랫폼 지원
- Windows, macOS, Linux 등 대부분의 운영 체제에서 사용 가능.
- Raspberry Pi와 같은 임베디드 플랫폼도 지원.
- 풍부한 기능
- 이미지 처리: 필터링, 변환, 윤곽선 추출, 히스토그램 분석 등.
- 영상 처리: 객체 추적, 배경 제거, 동작 인식 등.
- 머신 러닝: 객체 감지, 얼굴 인식, 딥러닝 프레임워크와의 통합.
- 빠른 속도와 효율성
- C++ 기반으로 설계되어 속도가 빠르며, GPU 가속도 지원.
[1] OpenCV 설치 및 설정
1. 설치 방법
1.Python 패키지 관리 도구(pip) 사용
pip install opencv-python
pip install opencv-python-headless # GUI 기능 없이 설치할 때
2.추가 모듈 설치
OpenCV에서 일부 고급 기능을 사용하려면 opencv-contrib-python 설치:
pip install opencv-contrib-python
3.설치 확인
Python에서 설치 확인:
import cv2
print(cv2.__version__)
2. OpenCV 기본 설정
1.라이브러리 임포트
OpenCV를 사용하려면 cv2 모듈을 임포트합니다:
import cv2
2.이미지 읽기와 표시
img = cv2.imread("example.jpg") # 이미지 읽기
cv2.imshow("Image", img) # 이미지 표시
cv2.waitKey(0) # 키 입력 대기
cv2.destroyAllWindows() # 창 닫기
3.영상 읽기와 재생
cap = cv2.VideoCapture("video.mp4")
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
cv2.imshow("Frame", frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
[2] OpenCV의 주요 이미지 처리 기능
1. 이미지 읽기 및 저장
- 이미지 읽기
img = cv2.imread("example.jpg", cv2.IMREAD_COLOR) # 컬러로 읽기
gray = cv2.imread("example.jpg", cv2.IMREAD_GRAYSCALE) # 흑백으로 읽기
- 이미지 저장
cv2.imwrite("output.jpg", img)
2. 이미지 변환
1.크기 조절
resized = cv2.resize(img, (300, 300)) # 300x300 크기로 변환
2.회전
rows, cols = img.shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), 90, 1)
rotated = cv2.warpAffine(img, M, (cols, rows))
3.색상 변환
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # BGR -> Grayscale
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # BGR -> HSV
3. 이미지 필터링
1.블러
blurred = cv2.GaussianBlur(img, (5, 5), 0) # 가우시안 블러
2.에지 검출
edges = cv2.Canny(img, 100, 200) # 에지 검출
[3] OpenCV 활용 사례
1. 얼굴 및 객체 인식
- Haar Cascade 사용
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
- YOLO 또는 SSD 사용
OpenCV DNN 모듈을 사용해 딥러닝 기반 객체 탐지 가능.
2. 실시간 동영상 처리
- 카메라 캡처 및 필터 적용
cap = cv2.VideoCapture(0) # 0은 기본 카메라
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Video", gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
[4] 고급 기능
1. 윤곽선 검출
contours, _ = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0, 255, 0), 3)
[5] 주의점 및 팁
- OpenCV는 GPU 가속 기능을 지원하므로 성능 향상을 위해 CUDA를 활용하세요.
- OpenCV 공식 문서와 튜토리얼은 새로운 기능 및 예제를 학습하는 데 매우 유용합니다:
OpenCV 공식 사이트 - Python뿐 아니라 C++에서의 OpenCV 활용도 고려하세요. C++은 더 높은 성능을 제공합니다.
OpenCV는 기본적인 이미지 처리부터 고급 머신 러닝 작업까지 넓은 범위를 지원하는 강력한 도구입니다.
다양한 프로젝트에 OpenCV를 적용해 보세요!
728x90
반응형
'코딩 > Python' 카테고리의 다른 글
PyInstaller를 활용한 Python 실행 파일 만들기: 완벽 가이드 (2) | 2024.11.19 |
---|---|
파이썬 tkinter 그리드 활용 가이드 (1) | 2024.02.13 |
파이썬 tkinter 스크롤 바 활용 가이드 (0) | 2024.02.11 |
파이썬 tkinter 프레임 활용 가이드 (1) | 2024.02.10 |
파이썬 tkinter messagebox 활용 가이드 (0) | 2024.02.09 |