def convert_video(self, output_file): """ Convert input video to a depthma p video. Currently only MP4 format is supported. output_file: string - name of the output depthmap video """ if self.input_file == output_file: raise ValueError( "Input and output file cannot have the same names") if not check_dir_write_access(output_file): raise ValueError( "Cannot write to directory to save %s file. Check permissions or choose another path", output_file) with VideoReader(self.input_file, self.low_quality, self.size) as video_reader: width = video_reader.width height = video_reader.height # Set the output video parameters fourcc = cv2.VideoWriter_fourcc(*'DIVX') is_color = 1 # save depth map video in grayscale out = cv2.VideoWriter(output_file, fourcc, video_reader.fps, (width, height), is_color) for depth_map, _ in self._get_frame(video_reader): # Write the result to video file out.write(depth_map) out.release()
def get_frame_and_depth_map(self): with VideoReader(self.input_file, self.low_quality, self.size) as video_reader: for depth_map, next_frame in self._get_frame(video_reader): yield depth_map, next_frame cv2.destroyAllWindows()
def test_constructor(mocked_file_check, mocked_cv2): input_file = 'test_file_name' step = 10 low_quality = True # mock VideoCapture object mock_video_capture(mocked_cv2, 1) # mock check_file_exists() to make file 'available' mocked_file_check.return_value = True with VideoReader(input_file, low_quality, None) as video_reader: assert video_reader.input_file == input_file
def test_low_quality_disabled(mocked_file_check, mocked_cv2): input_file = 'test_file_name' step = 10 low_quality = False # mock VideoCapture object mock_video_capture(mocked_cv2, 1) # mock check_file_exists() to make file 'available' mocked_file_check.return_value = True with VideoReader(input_file, low_quality, None) as video_reader: assert video_reader.width == _MOCK_WIDTH assert video_reader.height == _MOCK_HEIGHT
def test_size_specified(mocked_file_check, mocked_cv2): input_file = 'test_file_name' step = 10 low_quality = False size = (10, 20) # mock VideoCapture object mock_video_capture(mocked_cv2, 1) # mock check_file_exists() to make file 'available' mocked_file_check.return_value = True with VideoReader(input_file, low_quality, size) as video_reader: assert video_reader.width == size[0] assert video_reader.height == size[1]
def test_size_and_low_quality_endabled(mocked_file_check, mocked_cv2): ''' If low quality enabled and size is provided, constructor should raise an exception ''' input_file = 'test_file_name' step = 10 low_quality = True size = (1, 1) # mock VideoCapture object mock_video_capture(mocked_cv2, 1) # mock check_file_exists() to make file 'available' mocked_file_check.return_value = True with pytest.raises(ValueError): vr = VideoReader(input_file, low_quality, size)