def _get_rois_opencv(self, file, mode='gray'):
cap = cv2.VideoCapture(file)
vidframes = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
rois = self._read_roi_file(file)
totalframes = rois.shape[0]
if totalframes != vidframes:
print('Roi Frames: %d\n' % totalframes)
print('Vid Frames: %d\n' % vidframes)
raise Exception('Mismatch between the actual number of video frames and the provided ROI _labels')
if mode == 'gray':
roi_seq = np.zeros((totalframes, self._yres, self._xres), dtype=np.float32)
elif mode == 'rgb':
roi_seq = np.zeros((totalframes, self._yres, self._xres, 3), dtype=np.float32)
else:
raise Exception('gray or rgb')
this_frame = 0
while cap.isOpened():
ret, frame = cap.read()
if ret is False:
break
if mode == 'gray':
gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
gray_roi = _crop_roi(gray, rois[this_frame, :])
resized = self._resize_frame(gray_roi)
elif mode == 'rgb':
rgb_roi = _crop_roi(frame, rois[this_frame, :])
resized = self._resize_frame(rgb_roi)
else:
raise Exception('gray or rgb')
roi_seq[this_frame, :, :] = resized
this_frame += 1
return roi_seq
评论列表
文章目录