Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_video_open_failure():
""" Test VideoManager constructor (__init__ method) with invalid filename(s)
and device IDs to trigger an IOError/VideoOpenFailure exception. """
# Attempt to open non-existing video files should raise an IOError.
with pytest.raises(IOError): VideoManager(['fauxfile.mp4'])
with pytest.raises(IOError): VideoManager(['fauxfile.mp4', 'otherfakefile.mp4'])
# Attempt to open 99th video device should raise a VideoOpenFailure since
# the OpenCV VideoCapture open() method will likely fail (unless the test
# case computer has 100 webcams or more...)
with pytest.raises(VideoOpenFailure): VideoManager([99])
# Test device IDs > 100.
with pytest.raises(VideoOpenFailure): VideoManager([120])
with pytest.raises(VideoOpenFailure): VideoManager([255])
def test_video_open_failure():
""" Test VideoManager constructor (__init__ method) with invalid filename(s)
and device IDs to trigger an IOError/VideoOpenFailure exception. """
# Attempt to open non-existing video files should raise an IOError.
with pytest.raises(IOError): VideoManager(['fauxfile.mp4'])
with pytest.raises(IOError): VideoManager(['fauxfile.mp4', 'otherfakefile.mp4'])
# Attempt to open 99th video device should raise a VideoOpenFailure since
# the OpenCV VideoCapture open() method will likely fail (unless the test
# case computer has 100 webcams or more...)
with pytest.raises(VideoOpenFailure): VideoManager([99])
# Test device IDs > 100.
with pytest.raises(VideoOpenFailure): VideoManager([120])
with pytest.raises(VideoOpenFailure): VideoManager([255])
elif not all([isinstance(video_file, (str, STRING_TYPE)) for video_file in video_files]):
raise ValueError("Unexpected element type in video_files list (expected str(s)/int).")
elif framerate is not None and not isinstance(framerate, float):
raise TypeError("Expected type float for parameter framerate.")
# Check if files exist.
if not is_device and any([not os.path.exists(video_file) for video_file in video_files]):
raise IOError("Video file(s) not found.")
cap_list = []
try:
cap_list = [cv2.VideoCapture(video_file) for video_file in video_files]
video_names = [get_video_name(video_file) for video_file in video_files]
closed_caps = [video_names[i] for i, cap in
enumerate(cap_list) if not cap.isOpened()]
if closed_caps:
raise VideoOpenFailure(closed_caps)
cap_framerates = [cap.get(cv2.CAP_PROP_FPS) for cap in cap_list]
cap_framerate, check_framerate = validate_capture_framerate(
video_names, cap_framerates, framerate)
# Store frame sizes as integers (VideoCapture.get() returns float).
cap_frame_sizes = [(math.trunc(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
math.trunc(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
for cap in cap_list]
cap_frame_size = cap_frame_sizes[0]
# If we need to validate the parameters, we check that the FPS and width/height
# of all open captures is identical (or almost identical in the case of FPS).
if validate_parameters:
validate_capture_parameters(
video_names=video_names, cap_frame_sizes=cap_frame_sizes,
check_framerate=check_framerate, cap_framerates=cap_framerates)
def _init_video_manager(self, input_list, framerate, downscale):
self.base_timecode = None
logging.debug('Initializing VideoManager.')
video_manager_initialized = False
try:
self.video_manager = VideoManager(
video_files=input_list, framerate=framerate, logger=logging)
video_manager_initialized = True
self.base_timecode = self.video_manager.get_base_timecode()
self.video_manager.set_downscale_factor(downscale)
except VideoOpenFailure as ex:
error_strs = [
'could not open video%s.' % get_plural(ex.file_list),
'Failed to open the following video file%s:' % get_plural(ex.file_list)]
error_strs += [' %s' % file_name[0] for file_name in ex.file_list]
dll_okay, dll_name = check_opencv_ffmpeg_dll()
if not dll_okay:
error_strs += [
'Error: OpenCV dependency %s not found.' % dll_name,
'Ensure that you installed the Python OpenCV module, and that the',
'%s file can be found to enable video support.' % dll_name]
logging.debug('\n'.join(error_strs[1:]))
if not dll_okay:
click.echo(click.style(
'\nOpenCV dependency missing, video input/decoding not available.\n', fg='red'))
raise click.BadParameter('\n'.join(error_strs), param_hint='input video')
except VideoFramerateUnavailable as ex:
def __init__(self, file_list=None, message=
"OpenCV VideoCapture object failed to return True when calling isOpened()."):
# type: (Iterable[(str, str)], str)
# Pass message string to base Exception class.
super(VideoOpenFailure, self).__init__(message)
# list of (filename: str, filepath: str)
self.file_list = file_list
def _init_video_manager(self, input_list, framerate, downscale):
self.base_timecode = None
logging.debug('Initializing VideoManager.')
video_manager_initialized = False
try:
self.video_manager = VideoManager(
video_files=input_list, framerate=framerate, logger=logging)
video_manager_initialized = True
self.base_timecode = self.video_manager.get_base_timecode()
self.video_manager.set_downscale_factor(downscale)
except VideoOpenFailure as ex:
error_strs = [
'could not open video%s.' % get_plural(ex.file_list),
'Failed to open the following video file%s:' % get_plural(ex.file_list)]
error_strs += [' %s' % file_name[0] for file_name in ex.file_list]
dll_okay, dll_name = check_opencv_ffmpeg_dll()
if not dll_okay:
error_strs += [
'Error: OpenCV dependency %s not found.' % dll_name,
'Ensure that you installed the Python OpenCV module, and that the',
'%s file can be found to enable video support.' % dll_name]
logging.debug('\n'.join(error_strs[1:]))
if not dll_okay:
click.echo(click.style(
'\nOpenCV dependency missing, video input/decoding not available.\n', fg='red'))
raise click.BadParameter('\n'.join(error_strs), param_hint='input video')
except VideoFramerateUnavailable as ex: