অধ্যায়Phase 4 · ভিডিও ও রিয়েল-টাইম সিস্টেম
4.2 15 মিনিট পড়া
Webcam Handling
VideoCapture API।
🎬 গল্প দিয়ে শুরু
Webcam — সবচেয়ে সহজ live video source। কিন্তু সঠিক handling না জানলে ২ FPS-এ চলে, ছবি delayed হয়, crash করে। এই অধ্যায়ে professional-grade webcam handling।
Basic Capture
python
import cv2
cap = cv2.VideoCapture(0) # 0 = default cam
if not cap.isOpened():
raise RuntimeError("Webcam খুলছে না")
while True:
ok, frame = cap.read()
if not ok: break
cv2.imshow("cam", frame)
if cv2.waitKey(1) & 0xFF == ord('q'): break
cap.release(); cv2.destroyAllWindows()Index trial
USB webcam plug করলে 0 কাজ না করলে 1, 2 ট্রাই করুন। Mac-এ permission popup অবশ্যই allow করুন।
Backend ও Resolution Set
python
import cv2
# Windows-এ DSHOW দ্রুত open হয়
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# Linux: cv2.CAP_V4L2; Mac: cv2.CAP_AVFOUNDATION
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
cap.set(cv2.CAP_PROP_FPS, 30)
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) # লেটেন্সি কমায়IP Camera / RTSP / Phone
python
# IP webcam (Android app)
cap = cv2.VideoCapture("http://192.168.0.105:8080/video")
# RTSP CCTV
cap = cv2.VideoCapture("rtsp://user:pass@192.168.1.50:554/stream1")
# Video file
cap = cv2.VideoCapture("clip.mp4")Camera properties tuning
python
# Exposure, gain, brightness
cap.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0.25) # manual
cap.set(cv2.CAP_PROP_EXPOSURE, -6)
cap.set(cv2.CAP_PROP_BRIGHTNESS, 128)
cap.set(cv2.CAP_PROP_CONTRAST, 128)Driver-dependent
সব camera সব property support করে না। Set করে get করে দেখে নিন আদৌ apply হলো কিনা।
Selfie-style mirror flip
python
frame = cv2.flip(frame, 1) # natural mirrorRobust webcam wrapper
python
cam.py
import cv2, time
class Cam:
def __init__(self, src=0, w=1280, h=720):
self.cap = cv2.VideoCapture(src)
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, w)
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, h)
self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)
time.sleep(1.0) # warm-up
if not self.cap.isOpened():
raise RuntimeError("Camera open failed")
def read(self):
for _ in range(3):
ok, f = self.cap.read()
if ok: return f
return None
def close(self):
self.cap.release() প্র্যাকটিস টাস্ক
- নিজের webcam-এ resolution 1280×720, FPS 30 set করে আসলেই হচ্ছে কিনা verify করুন।
- Android-এ IP Webcam app install করে phone-কে wireless camera বানান।
- Cam wrapper class extend করে snapshot() method যোগ করুন যা JPEG save করে।
সারসংক্ষেপ
- VideoCapture-এ সঠিক backend ও buffer size = কম latency।
- Property set করার পর get করে verify করুন।
- RTSP/IP cam URL syntax-ই প্রধান চ্যালেঞ্জ।
- Production-এ wrapper class রাখলে retry, logging সহজ।