비디오 시작하기

OpenCVBeginner
지금 연습하기

소개

OpenCV-Python 을 사용하여 비디오를 시작하는 방법에 대한 이 랩에 오신 것을 환영합니다! OpenCV (Open Source Computer Vision) 는 이미지 처리, 머신 러닝 및 컴퓨터 비전 애플리케이션을 위해 설계된 강력한 라이브러리입니다. 이 랩에서는 OpenCV-Python 에서 비디오를 사용하는 방법에 중점을 둘 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 86%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

비디오 읽기 및 프레임 저장

비디오를 캡처하려면 VideoCapture 객체를 생성해야 합니다. 다음은 비디오를 읽고 각 프레임을 frame 폴더에 저장하는 예시입니다.

비디오 경로는 /home/labex/project/video.mp4입니다.

파일 경로는 /home/labex/project/read_video.py입니다.

read_video.py 파일을 엽니다. 그런 다음 다음 코드를 입력합니다.

import cv2
import os

## Check if the 'frame' folder exists. Create it if it doesn't.
folder = os.path.exists('frame')
if not folder:
 os.makedirs('frame')
 print('new folder...')
 print('OK')
else:
 print('There is this folder!')

## Frame number
number = 0

## Create a VideoCapture object
cap = cv2.VideoCapture('video.mp4')

while True:
    ## Read a frame from the video
    ret, frame = cap.read()

    ## Frame number added
    number = number + 1
    if ret:
        ## Save the frame
        cv2.imwrite(f"./frame/save{number}.jpg", frame)

    ## Exit the loop
    else:
        break

print('Each frame has been saved to the frame folder')

print('Video read successfully!')

## Release the VideoCapture object
cap.release()

이 예제에서는 읽고 싶은 비디오 파일의 경로를 전달하여 VideoCapture 객체를 생성합니다. 그런 다음 while 루프를 사용하여 read() 메서드를 사용하여 비디오의 각 프레임을 읽습니다. 프레임을 성공적으로 읽으면 imwrite() 메서드를 사용하여 프레임을 저장합니다. 마지막으로 VideoCapture 객체를 해제합니다.

실행하려면 터미널에서 다음 명령을 실행할 수 있습니다.

python /home/labex/project/read_video.py

또는 오른쪽 상단 모서리에 있는 Run Python File과 같은 버튼을 클릭하여 실행할 수도 있습니다.

그런 다음 터미널이 "Video read successfully!"를 출력할 때까지 기다리면 frame 폴더에서 각 프레임의 사진을 볼 수 있습니다.

비디오 쓰기 및 저장

비디오를 쓰고 저장하려면 VideoWriter 객체를 생성해야 합니다. 다음은 비디오를 쓰고 저장하는 방법의 예시입니다.

비디오 경로는 /home/labex/project/video.mp4입니다.

파일 경로는 /home/labex/project/write_video.py입니다.

write_video.py 파일을 엽니다. 그런 다음 다음 코드를 입력합니다.

import cv2

## Create a VideoCapture object
cap = cv2.VideoCapture('video.mp4')

## Get the video frame size and frame rate
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))

## Create a VideoWriter object
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height))

while True:
    ## Read a frame from the video
    ret, frame = cap.read()

    if ret:
        ## Process the frame
        ## ...

        ## Write the processed frame to the output video
        out.write(frame)

    else:
        break

print('Video save successfully!')

## Release the VideoCapture and VideoWriter objects
cap.release()
out.release()

이 예제에서는 읽을 비디오 파일의 경로를 전달하여 VideoCapture 객체를 생성합니다. 그런 다음 get() 메서드를 사용하여 비디오 프레임 크기와 프레임 속도를 가져옵니다. 다음으로, 출력 파일 이름, fourcc 코드, 프레임 속도 및 프레임 크기를 전달하여 VideoWriter 객체를 생성합니다. fourcc 코드는 비디오 코덱을 지정하는 데 사용되는 4 바이트 코드입니다. 이 예제에서는 XVID 코덱을 사용합니다.

그런 다음 while 루프를 사용하여 read() 메서드를 사용하여 비디오의 각 프레임을 읽습니다. 프레임을 성공적으로 읽으면 프레임을 처리 (예: 필터 적용) 하고 VideoWriter 객체의 write() 메서드를 사용하여 출력 비디오에 씁니다. 마지막으로 VideoCaptureVideoWriter 객체를 해제합니다.

실행하려면 터미널에서 다음 명령을 실행할 수 있습니다.

python /home/labex/project/write_video.py

또는 오른쪽 상단 모서리에 있는 Run Python File과 같은 버튼을 클릭하여 실행할 수도 있습니다.

그런 다음 터미널이 "Video save successfully!"를 출력할 때까지 기다리면 프로젝트 폴더에서 output.avi라는 출력 비디오를 볼 수 있습니다. 그러나 현재 환경은 비디오 파일 보기를 지원하지 않습니다. 아래와 같이 파일을 로컬로 다운로드한 다음 비디오 플레이어를 사용하여 보아야 합니다.

Download Video File
Download Video File

요약

축하합니다! 이제 OpenCV-Python 을 사용하여 비디오를 읽고, 표시하고, 쓰고, 저장하는 방법을 배웠습니다. 이러한 기본적인 기술을 통해 더 발전된 컴퓨터 비전 기술과 응용 프로그램을 탐색할 수 있습니다.

다양한 비디오 형식을 시도하거나, 프레임에 필터를 적용하거나, 객체 추적 및 감지를 실험하여 이 튜토리얼을 확장해 보세요. 가능성은 무궁무진합니다!