728x90

스파르타 코딩클럽의 딥러닝 이미지 처리 수업을 기반으로 공부한 내용을 정리하고 있습니다.

 

동영상 플레이어를 만들어 볼 것이다.

 

우선 동영상을 open CV로 불러오자.

 

가장 중요한 포인트는 동영상은 연속된 이미지로 이루어져 있다. 

즉 동영상은 여러장의 이미지로 나누어 볼 수도 있는 것이다. 

 

**최종코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import cv2
 
cap = cv2.VideoCapture('04.mp4')
 
while True:
    ret, img = cap.read()
  #무한 루프를 돌면서 이미지를 계속 불러온다. 
  # cap.read로 이미지를 한장씩 불러와서 저장한다,
 
    if ret == False# 동영상 재생이 끝나면 false가 되고, 루프가 종료.
        break
 
    cv2.imshow('result', img)
  #위의 동영상에서 처리한 이미지들을 다 띄우는 것이다. 
    
    if cv2.waitKey(1== ord('q'):
        break
  #동영상에는 waiKey가 0으로 무한정으로 뜨도록 하기 보다는
  # 속도를 조절할 수 있다. 숫자가 커질수록 속도가 느리게 이미지가 뜬다고 보면 된다.
  # 위의 코드는 q버튼을 클릭시에 이미지가 종료되도록 지정한 것이다.
cs

 

  • cv2.VideoCapture() 동영상 파일을 불러올 때 쓴다.  괄호 안에 동영상 파일의 경로를 입력하면 해당 영상 파일을 로드

  • while True: 아래 코드를 반복하면서 실행 

     동영상에서 이미지를 한 프레임씩 읽고 출력하는 코드를 무한하게 반복한다는 의미이다.

  • ret, img = cap.read()

    cap.read() 를 사용하여 동영상 파일에서 한 개의 프레임을 읽어온다. 영상은 수 백개, 수 천개의 프레임으로 이루어져 있고 각 프레임은 사진 1장과 같다.

  • ret 변수에는 영상에서 제대로 프레임을 읽어 왔을 때 True가 저장되고 프레임이 더 이상 존재하지 않거나 에러가 발생했을 때 False가 저장된다.

     

     

  • img 변수에는 읽어 온 1개의 프레임이 저장된다. 만약 ret 이 False 일 경우 None 이 저장됩니다.

    if ret == False: break

    따라서 ret 이 False 라면 프레임이 더 이상 존재하지 않으므로 무한루프에서 빠져나와 프로그램을 종료한다.

  • 프로그램 종료하기

    위에 이미지와 마찬가지로 cv2.imshow() 를 사용하여 result라는 이름의 윈도우에 img를 출력한다,

    cv2.waitKey(1) 1ms (0.001초) 동안 키보드의 입력을 기다린다.

    만약 키보드의 q 버튼을 누르면 무한루프에서 빠져나와 프로그램을 종료

 

동영상 처리 심화

 

1) 영상에서 도형 띄우기 : 이미지와 방법이 유사하다

-> 한 프레임씩 이미지를 저장할 때 그 코드 아래에 이미지 도형 코드 출력을 기재한다.

 

2) 추가적으로 리사이즈/ 자르기/ 컬러 시스템 변경하기 모두 이미지와 유사한 방법으로 진행하면 된다. 

 

=> 위의 모든 코드들을 while true를 도는 동영상 내의 이미지 출력 코드 아래에 기재하면 된다.

 

3) 캠영상을 화면에 띄우기

비디오 캡쳐 코드 부분을 아래와 같이 수정하면 된다.

그리고 실행하면 웹캠을 통해 내얼굴이 뜨게된다.

 

-> 여기서 나는 웹캠이 뜨지 않았고 아래의 방법으로 해결 했다.

1. VSCode 에서 Cmd + Shift + P

2. Shell Command: Install 'code' command in PATH 클릭

3. Cmd + Q를 눌러 VSCode 강제 종료

4. 터미널 프로그램 실행

5. sudo code 를 입력해서 VSCode를 관리자 권한으로 실행 (비밀번호 입력 필요)

6. 작성한 코드 실행

728x90

+ Recent posts