12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #!/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'
|