OpenCV

[OpenCV] 이미지 처리 (비디오 crop)

괜찮나요닝겐 2024. 8. 18. 12:35
728x90
반응형

opencv로 비디오를 프레임 이미지로 읽어서 저장하는것까지 해보았는데, 이번엔 그 해당 이미지에 특정 좌표를 그려넣는걸 해보자.

 

import cv2

# 비디오 파일 경로
video_path = '/my_dir/input_video.mp4'

# 출력 비디오 경로
output_video_path = '/my_dir/output_video_with_rectangle.mp4'

# 비디오 캡처 객체 생성
cap = cv2.VideoCapture(video_path)

# 원본 비디오의 속성 가져오기
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)

# VideoWriter 객체 생성 (코덱, FPS, 프레임 크기 설정)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video_path, fourcc, fps, (width, height))

while True:
    ret, frame = cap.read()
    
    # 프레임을 제대로 읽었는지 확인
    if not ret:
        break

    # 사각형 좌표 및 크기 설정 (왼쪽 상단 x, y 좌표, 오른쪽 하단 x, y 좌표)
    start_point = (50, 50)  # 사각형의 왼쪽 상단 좌표
    end_point = (200, 200)  # 사각형의 오른쪽 하단 좌표
    color = (0, 255, 0)  # 사각형의 색상 (BGR 형식, 여기서는 녹색)
    thickness = 2  # 사각형의 두께

    # 프레임에 사각형 그리기
    frame_with_rectangle = cv2.rectangle(frame, start_point, end_point, color, thickness)

    # 새로운 비디오 파일에 프레임 쓰기
    out.write(frame_with_rectangle)

# 자원 해제
cap.release()
out.release()

print(f'Output video saved as {output_video_path}')

 

오늘은 여기까지

 

728x90
반응형