소개
OpenCV-Python 을 사용하여 비디오를 시작하는 방법에 대한 이 랩에 오신 것을 환영합니다! OpenCV (Open Source Computer Vision) 는 이미지 처리, 머신 러닝 및 컴퓨터 비전 애플리케이션을 위해 설계된 강력한 라이브러리입니다. 이 랩에서는 OpenCV-Python 에서 비디오를 사용하는 방법에 중점을 둘 것입니다.
OpenCV-Python 을 사용하여 비디오를 시작하는 방법에 대한 이 랩에 오신 것을 환영합니다! OpenCV (Open Source Computer Vision) 는 이미지 처리, 머신 러닝 및 컴퓨터 비전 애플리케이션을 위해 설계된 강력한 라이브러리입니다. 이 랩에서는 OpenCV-Python 에서 비디오를 사용하는 방법에 중점을 둘 것입니다.
비디오를 캡처하려면 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
또는 오른쪽 상단 모서리에 있는
과 같은 버튼을 클릭하여 실행할 수도 있습니다.
그런 다음 터미널이 "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() 메서드를 사용하여 출력 비디오에 씁니다. 마지막으로 VideoCapture 및 VideoWriter 객체를 해제합니다.
실행하려면 터미널에서 다음 명령을 실행할 수 있습니다.
python /home/labex/project/write_video.py
또는 오른쪽 상단 모서리에 있는
과 같은 버튼을 클릭하여 실행할 수도 있습니다.
그런 다음 터미널이 "Video save successfully!"를 출력할 때까지 기다리면 프로젝트 폴더에서 output.avi라는 출력 비디오를 볼 수 있습니다. 그러나 현재 환경은 비디오 파일 보기를 지원하지 않습니다. 아래와 같이 파일을 로컬로 다운로드한 다음 비디오 플레이어를 사용하여 보아야 합니다.

축하합니다! 이제 OpenCV-Python 을 사용하여 비디오를 읽고, 표시하고, 쓰고, 저장하는 방법을 배웠습니다. 이러한 기본적인 기술을 통해 더 발전된 컴퓨터 비전 기술과 응용 프로그램을 탐색할 수 있습니다.
다양한 비디오 형식을 시도하거나, 프레임에 필터를 적용하거나, 객체 추적 및 감지를 실험하여 이 튜토리얼을 확장해 보세요. 가능성은 무궁무진합니다!