[openCV] 영상 처리의 기초

윤한영·2022년 7월 26일
0

AI

목록 보기
7/7

✅ 전체적인 흐름

1. openCV 라이브러리 사용해서 카메라(웹캠)을 작동시키기고 garyScale 표현하기
2. Python time 라이브러리를 사용하여 웹캠 비디오 화면에 타임스탬프 추가하기

1) 라이브러리 가져오기

코드 작성을 위한 라이브러리를 import 합니다.

import cv2

1-1) cv2.VideoCapture() # 카메라 객체 불러오고 grayScale

cap = cv2.VideoCapture(0) 

while(True):
    ret, frame = cap.read()                              
    cv2.resize(frame, (800,600))
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 영상프레임에 grayScale 적용
    cv2.imshow('Press Spacebar to Exit',frame)           
    cv2.imshow("Gray",gray) # 원본 영상과 grayScale한 영상 비교를 위한 imshow
    
    if cv2.waitKey(1) & 0xFF == ord(' '):  # space bar 클릭 시 정지
        break

camera.release()                           
cv2.destroyAllWindows()

- cv2.VideoCapture()

  1. cv2.VideoCapture(filename) filename : 동영상 파일 명 또는 이미지 파일명
  2. cv2.VideoCapture(device) : 연결된 장치(카메라) index(하나만 있는 경우는 0)

- cv2.resize()

이미지의 크기를 조절하기 위한 resize()

  • cv2.resize(src, dstSize, fx, fy, interpolation)
    : 입력 프레임(src), 절대 크기(dstSize), 비율로 크기 설정(fx, fy), 보간법(interpolation), 출력 이미지(dst)
cv2.resize(frame, (800,600))
cv2.resize(frame, None, fx=2, fy=2)

- cv2.cvtColor()

본래의 색상 공간에서 다른 색상 공간으로 변환할 때 사용하는 cvtColor()

  • dst = cv2.cvtcolor(src, code, dstCn) # 기본 형식은 이렇지만 dstCn부분의 출력채널은 Null값을 사용해도 괜찮기에
    일반적으로 이렇게 사용됩니다.
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 

- grayScale을 하는 이유

: 3차원 데이터(b, g, r)을 2차원 데이터로 변경할 수 있다
ex/ (600, 800, 3) -> (600, 800)


2) 라이브러리 가져오기

코드 작성을 위한 라이브러리를 import 합니다.

from datetime import datetime
import cv2

2-1) datetime # 웹캠 비디오 화면에 타임스탬프 추가하기


cap = cv2.VideoCapture(0) # 카메라(웹캠)로 VideoCapture 객체 생성

while True:
    ret, frame = cap.read()
    frame = cv2.resize(frame,(800,600))
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    cv2.putText(frame, str(datetime.now()), (300,50), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255,255,255), 2)
    cv2.imshow('Press Spacebar to Exit',frame)              # 프레임 표시
    if cv2.waitKey(1) & 0xFF == ord(' '):  # space bar 클릭 시 정지
        break
cap.release()                          
cv2.destroyAllWindows()

- cv2.putText()

cv2.putText()를 사용하여 비디오 프레임 or 이미지에 글자를 넣어준다.

  • cv2.putTexet(frame, text, org, font, fontscale, color, thickness)
    : 입력 프레임(frame), 넣어줄 글자(text), 글자를 넣어줄 좌표값(org), 글꼴(font), 글자크기(fontscale), 글자색(color), 글자 두께(thickness)
cv2.putText(frame, "안녕하세요", (300,50), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,255,0), 2)

0개의 댓글