অধ্যায়Phase 4 · ভিডিও ও রিয়েল-টাইম সিস্টেম
4.1 16 মিনিট পড়া
Video Processing Pipeline
Frame-by-frame architecture।
🎬 গল্প দিয়ে শুরু
Video আসলে কিছুই না — প্রতি সেকেন্ডে ৩০টি ছবি, পরপর। তাই video processing মানেই frame-by-frame image processing। কিন্তু সঠিক pipeline architecture না থাকলে ৩০ FPS-এর video ৫ FPS-এ চলে।
Standard Pipeline
text
[ Capture ] → [ Pre-process ] → [ Analyze ] → [ Post-process ] → [ Output ]
webcam resize/cvtColor model/CV draw/annotate display/save
RTSP streamপ্রতিটি stage-এ frame একটি object — সাধারণত NumPy array।
Minimum viable pipeline
python
pipeline.py
import cv2, time
cap = cv2.VideoCapture("street.mp4")
W = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
H = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
writer = cv2.VideoWriter("out.mp4",
cv2.VideoWriter_fourcc(*"mp4v"), fps, (W, H))
while True:
ok, frame = cap.read()
if not ok: break
# 1. pre
small = cv2.resize(frame, (640, 360))
gray = cv2.cvtColor(small, cv2.COLOR_BGR2GRAY)
# 2. analyze
edges = cv2.Canny(gray, 80, 180)
# 3. post
edges_bgr = cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR)
out = cv2.addWeighted(small, 0.7, edges_bgr, 0.3, 0)
out = cv2.resize(out, (W, H))
# 4. output
writer.write(out)
cv2.imshow("pipeline", out)
if cv2.waitKey(1) == 27: break
cap.release(); writer.release(); cv2.destroyAllWindows()Codec ও Format
| Codec | Extension | কখন |
|---|---|---|
| mp4v | mp4 | সাধারণ, browser-compatible |
| XVID | avi | Local debugging |
| MJPG | avi | High-bandwidth, lossless-feel |
| H264 | mp4 | Best compression (ffmpeg backend) |
Frame metadata
python
print("FPS: ", cap.get(cv2.CAP_PROP_FPS))
print("Frames: ", cap.get(cv2.CAP_PROP_FRAME_COUNT))
print("Width: ", cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print("Height: ", cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# Specific frame-এ jump
cap.set(cv2.CAP_PROP_POS_FRAMES, 300) প্র্যাকটিস টাস্ক
- একটি video থেকে প্রতি ১০তম frame extract করে images/ folder-এ save করুন।
- Video-র মাঝখান থেকে শুরু করে শেষ পর্যন্ত শুধু grayscale version save করুন।
- input ও output পাশাপাশি (side-by-side) একটি বড় frame বানিয়ে write করুন।
সারসংক্ষেপ
- Video = sequence of frames; processing = per-frame image op।
- Standard pipeline: capture → pre → analyze → post → output।
- Codec, fps, size set না করলে output corrupt হয়।
- Pre-process-এ resize দিয়েই বড় speed gain।