#!/usr/bin/env python """video: Description.""" from json import JSONEncoder import cv2 from .errorable import Errorable class Video(Errorable, JSONEncoder): framecount = property(fget=lambda self: self._framecount) def get_frame(self, frame): self._cap.set(cv2.CAP_PROP_POS_FRAMES, frame) retval, image = self._cap.read() if not retval: self._report_error('OpenCV error prevents reading of frame!') return None else: rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) return rgb def __init__(self, filename): Errorable.__init__(self) self._filename = filename self._framecount = -1 try: self._cap = cv2.VideoCapture(self._filename) if not self._cap.isOpened(): raise Exception self._framecount = int(self._cap.get(cv2.CAP_PROP_FRAME_COUNT)) except: self._report_error('Error opening %s' % filename) def close(self): self._cap.release() def default(self, o): return 'CAPTURE'