OpenCV - 개념 및 설치방법

dumbbelldore·2025년 1월 27일
0

zero-base 33기

목록 보기
87/97
post-thumbnail

1. OpenCV 개념

  • OpenCV(Open Source Computer Vision)는 컴퓨터 비전머신 러닝 작업을 지원하는 강력한 오픈소스 라이브러리를 지칭
  • 1999년에 Intel에서 개발되었으며, 현재는 많은 개발자와 연구자들이 사용하는 표준 도구 중 하나로 자리 잡았음
  • OpenCV는 무료로 사용 가능하며 BSD 라이선스를 따르기 때문에 상업적인 프로젝트에도 제한 없이 사용할 수 있음
  • C++으로 구현되어 있어 속도가 빠르고 실시간 처리에 적합하며, Python, Java, MATLAB 등 다양한 언어를 지원함
  • 활용분야: 의료영상 처리, 자율주행, 스포츠 분석 등

2. Python 환경 내 OpenCV 설치

  • pip 명령어를 통한 간단한 설치 지원
pip install opencv-python

3. OpenCV 주요 기능

3-1. 이미지 처리

  • 이미지 읽기:cv2.imread()
  • 이미지 쓰기: cv2.imwrite()
  • 이미지 크기 조정: cv2.resize()
  • 이미지 회전: cv2.rotate()
  • 색상 변환(RGB ↔ Grayscale 등): cv2.cvtColor()

3-2. 비디오 처리

  • 비디오 파일 읽기: cv2.VideoCapture()
  • 비디오 파일 쓰기: cv2.VideoWriter()

3-3. 머신러닝

  • k-NN: cv2.ml.KNearest_create()
  • SVM: cv2.ml.SVM_create()
  • MLP: cv2.ml.ANN_MLP_create()
  • 모델 훈련: model.train()
  • 모델 예측: model.predict()

4. 예제 코드

4-1. 이미지 블러 처리

import cv2

image = cv2.imread('input.jpg')
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)
cv2.imwrite('output.jpg', blurred_image) 

4-2. 동영상 부메랑 만들기

cap = cv2.VideoCapture('data/input.mov')

fps = cap.get(cv2.CAP_PROP_FPS)  # 초당 프레임 수
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))  # 총 프레임 수
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # 프레임의 가로 크기
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 프레임의 세로 크기

fourcc = cv2.VideoWriter_fourcc(*'avc1') # MOV 코덱
out = cv2.VideoWriter('data/output.mov', fourcc, fps, (width, height))

frames = []
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    frames.append(frame)

# 첫 1초에 해당하는 프레임 추출
first_second_frames = frames[:int(fps)]

# 부메랑 효과(1초 재생 + 1초 역재생 순서로 3회 반복)
boomerang_frames = first_second_frames + first_second_frames[::-1] +\
                   first_second_frames + first_second_frames[::-1] +\
                   first_second_frames + first_second_frames[::-1]

for frame in boomerang_frames:
    out.write(frame)

cap.release()
out.release()
cv2.destroyAllWindows()


*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글