Camera Frame과 Frame Rate · 학습
실행 조건
입력: 생성 영상과 Timestamp. 실제 촬영 예제는 Raspberry Pi OS의 Picamera2를 사용합니다. OS에 없는 경우 터미널에서 sudo apt install python3-picamera2.
이번에 배울 내용
해상도와 촬영 간격을 정하려면 저장량·관측 범위·Frame Rate의 교환 관계를 알아야 합니다.
전체 흐름
Frame 배열 → ROI·해상도 → Timestamp → 메모리·실제 FPS
한 Frame의 비용
압축 전 저장량은 높이×너비×채널 수×채널당 Byte입니다. 해상도를 두 축에서 두 배로 키우면 픽셀 수는 네 배가 됩니다. ROI로 필요한 구역만 쓰면 관측 정보와 처리 비용을 함께 조절할 수 있습니다.
요청한 FPS와 실제 기록
노출·전송·변환·저장에 시간이 걸립니다. 실제 FPS는 Timestamp의 간격으로 계산합니다. Frame 수만 세거나 요청 설정값만 기록하면 끊김·지연을 놓칠 수 있습니다.
풀이 예제
제공 NumPy 코드가 만드는 120×160×3 uint8 RGB 영상을 사용합니다.
import numpy as np
import matplotlib.pyplot as plt
x,y=np.meshgrid(np.linspace(0,255,160),np.linspace(0,255,120))
frame=np.stack([x,y,255-x],axis=-1).astype(np.uint8)
small=frame[::2,::2]
print(frame.shape,frame.nbytes,small.shape,small.nbytes)
(120, 160, 3) 57600 (60, 80, 3) 14400