示例#1
0
    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()
示例#2
0
    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()
示例#3
0
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
示例#4
0
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
示例#5
0
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]
示例#6
0
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)