OTVision 0.6.13__tar.gz → 0.6.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/config_parser.py +23 -3
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/version.py +1 -1
- {otvision-0.6.13 → otvision-0.6.14}/PKG-INFO +1 -1
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/test_config_parser.py +82 -0
- {otvision-0.6.13 → otvision-0.6.14}/.editorconfig +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.flake8 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.github/dependabot.yml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.github/workflows/build-nightly.yml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.github/workflows/build-release.yml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.github/workflows/linter.yml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.github/workflows/release-pypi.yml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.github/workflows/release-testpypi.yml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.github/workflows/test.yml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.gitignore +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.pre-commit-config.yaml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.vscode/launch.json +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.vscode/scripts/build_debug_env.cmd +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.vscode/scripts/build_debug_env.sh +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.vscode/scripts/teardown_debug_env.cmd +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.vscode/scripts/teardown_debug_env.sh +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.vscode/settings.json +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.vscode/tasks.json +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/.yamllint.yaml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/LICENSE +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/abstraction/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/abstraction/defaults.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/abstraction/observer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/abstraction/pipes_and_filter.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/buffer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/configure_logger.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/current_object_detector.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/current_object_detector_metadata.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/detected_frame_factory.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/factory.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/get_detect_cli_args.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/timestamper.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/update_detect_config_with_cli_args.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/event/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/event/new_otvision_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/event/new_video_start.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/frame_count_provider.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/get_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/get_current_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/otvision_save_path_provider.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/track/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/track/get_track_cli_args.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/track/ottrk.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/track/tracking_run_id.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/track/update_current_track_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/track/update_track_config_with_cli_args.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/update_current_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/video/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/application/video/generate_video.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/convert/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/convert/convert.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/dataformat.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/builder.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/cli.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/detect.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/detected_frame_buffer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/detected_frame_producer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/detected_frame_producer_factory.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/file_based_detect_builder.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/otdet.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/otdet_file_writer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/plugin_av/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/plugin_av/rotate_frame.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/pyav_frame_count_provider.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/rtsp_based_detect_builder.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/rtsp_input_source.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/timestamper.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/video_input_source.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/detect/yolo.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/cli.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/current_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/detect_producer_consumer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/detection.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/frame.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/input_source_detect.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/object_detection.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/serialization.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/time.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/domain/video_writer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/helpers/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/helpers/date.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/helpers/files.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/helpers/formats.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/helpers/input_types.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/helpers/log.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/helpers/machine.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/helpers/video.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/plugin/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/plugin/ffmpeg_video_writer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/plugin/generate_video.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/plugin/yaml_serialization.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/builder.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/cli.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/exporter/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/exporter/filebased_exporter.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/id_generator.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/model/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/model/filebased/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/model/filebased/frame_chunk.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/model/filebased/frame_group.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/model/track_exporter.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/model/tracking_interfaces.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/parser/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/parser/chunk_parser_plugins.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/parser/frame_group_parser_plugins.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/stream_ottrk_file_writer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/track.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/tracker/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/tracker/filebased_tracking.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/track/tracker/tracker_plugin_iou.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/transform/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/transform/get_homography.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/transform/reference_points_picker.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/transform/transform.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/view/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/view/helpers/OTC.ico +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/view/view.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/view/view_convert.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/view/view_detect.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/view/view_helpers.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/view/view_track.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision/view/view_transform.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/OTVision.bat +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/README.md +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/clean-up-repository.sh +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/config.yml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/convert.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/detect.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/export_models.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/generate_video.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/install.cmd +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/install.sh +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/install_cuda.cmd +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/install_cuda.sh +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/install_dev.cmd +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/install_dev.sh +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/pyproject.toml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/reference_points_picker.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/abstraction/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/abstraction/test_defaults.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/abstraction/test_observer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/detect/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/detect/test_current_object_detector.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/detect/test_detected_frame_factory.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/detect/test_get_detect_cli_args.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/detect/test_timestamper.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/detect/test_update_detect_config_with_cli_args.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/test_buffer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/test_get_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/test_otvision_save_path_provider.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/track/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/track/test_get_track_cli_args.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/track/test_ottrk.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/track/test_update_current_track_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/application/track/test_update_track_config_with_cli_args.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/cli/custom_cli_test_config.yaml +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/cli/test_convert_cli.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/cli/test_detect_cli.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/cli/test_track_cli.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/conftest.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/convert/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/convert/test_convert.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_CamView.png +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_CamView_Cars-Cyclist.png +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_CamView_Cars-Truck.png +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_CamView_refpts.png +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_FR20.otrfpts +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Satellite.jpg +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/Testvideo_Satellite_far.jpg +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/fail_fps_from_filename/Testvideo_Cars-Cyclist_F20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/fail_fps_from_filename/Testvideo_Cars-Truck_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/fps_from_filename/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/fps_from_filename/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/fps_from_filename/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/fps_from_filename/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/input_fps_20/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/input_fps_20/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/input_fps_20/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/input_fps_20/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/input_fps_40/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/input_fps_40/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/input_fps_40/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/input_fps_40/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.avi +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.avi +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mkv +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mkv +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mov +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mov +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.mov +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.h264 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.mov +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/detect/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/detect/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/detect/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/detect/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/detect/rotated-Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/log/_otvision_logs/test.log +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_min_10/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_min_10/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_min_10/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_min_10/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_min_3/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_min_3/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_min_3/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_min_3/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_miss_max_25/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_miss_max_25/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_miss_max_25/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_miss_max_25/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_miss_max_75/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_miss_max_75/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_miss_max_75/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/track/t_miss_max_75/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/transform/Testvideo_FR20.otrfpts +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/yolov8m.mlpackage/Data/com.apple.CoreML/model.mlmodel +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/yolov8m.mlpackage/Data/com.apple.CoreML/weights/weight.bin +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/data/yolov8m.mlpackage/Manifest.json +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/detect_test.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/plugin_av/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/plugin_av/test_rotate_frame.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/test_detected_frame_buffer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/test_detected_frame_producer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/test_detected_frame_producer_factory.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/test_otdet.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/test_otdet_file_writer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/test_pyav_frame_count_provider.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/test_rtsp_input_source.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/test_video_input_source.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/detect/yolo_test.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/helpers/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/helpers/files_test.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/helpers/formats_test.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/helpers/test_log.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/log/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/log/log_maker.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/log/test_log.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/plugin/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/plugin/test_ffmpeg_video_file_writer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/test_config.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/helper/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/helper/data_builder.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/parser/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/parser/test_chunk_parser_plugins.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/test_frame_chunk.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/test_frame_group.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/test_frame_group_parser_plugins.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/test_stream_ottrk_file_writer.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/test_track.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/track/test_tracking_data_structures.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/transform/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/transform/test_transform.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/utils/__init__.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/utils/generator.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/tests/utils/mocking.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/track.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/transform.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/update_precommit.py +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/uv.lock +0 -0
- {otvision-0.6.13 → otvision-0.6.14}/view.py +0 -0
|
@@ -73,6 +73,11 @@ from OTVision.application.config import (
|
|
|
73
73
|
_UndistortConfig,
|
|
74
74
|
)
|
|
75
75
|
from OTVision.domain.serialization import Deserializer
|
|
76
|
+
from OTVision.plugin.ffmpeg_video_writer import (
|
|
77
|
+
ConstantRateFactor,
|
|
78
|
+
EncodingSpeed,
|
|
79
|
+
VideoCodec,
|
|
80
|
+
)
|
|
76
81
|
|
|
77
82
|
|
|
78
83
|
class InvalidOtvisionConfigError(Exception):
|
|
@@ -190,6 +195,21 @@ class ConfigParser:
|
|
|
190
195
|
if expected_duration is not None:
|
|
191
196
|
expected_duration = timedelta(seconds=int(expected_duration))
|
|
192
197
|
|
|
198
|
+
if video_codec := data.get(VIDEO_CODEC, None):
|
|
199
|
+
video_codec = VideoCodec(video_codec)
|
|
200
|
+
else:
|
|
201
|
+
video_codec = DetectConfig.video_codec
|
|
202
|
+
|
|
203
|
+
if encoding_speed := data.get(ENCODING_SPEED, None):
|
|
204
|
+
encoding_speed = EncodingSpeed(encoding_speed)
|
|
205
|
+
else:
|
|
206
|
+
encoding_speed = DetectConfig.encoding_speed
|
|
207
|
+
|
|
208
|
+
if data.get(CRF, None) is not None:
|
|
209
|
+
crf = ConstantRateFactor[data[CRF]]
|
|
210
|
+
else:
|
|
211
|
+
crf = DetectConfig.crf
|
|
212
|
+
|
|
193
213
|
start_time = self._parse_start_time(data)
|
|
194
214
|
return DetectConfig(
|
|
195
215
|
paths=sources,
|
|
@@ -202,9 +222,9 @@ class ConfigParser:
|
|
|
202
222
|
detect_start=data.get(DETECT_START, DetectConfig.detect_start),
|
|
203
223
|
detect_end=data.get(DETECT_END, DetectConfig.detect_end),
|
|
204
224
|
write_video=data.get(WRITE_VIDEO, DetectConfig.write_video),
|
|
205
|
-
video_codec=
|
|
206
|
-
encoding_speed=
|
|
207
|
-
crf=
|
|
225
|
+
video_codec=video_codec,
|
|
226
|
+
encoding_speed=encoding_speed,
|
|
227
|
+
crf=crf,
|
|
208
228
|
)
|
|
209
229
|
|
|
210
230
|
def parse_yolo_config(self, data: dict) -> YoloConfig:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OTVision
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.14
|
|
4
4
|
Summary: OTVision is a core module of the OpenTrafficCam framework to perform object detection and tracking.
|
|
5
5
|
Project-URL: Homepage, https://opentrafficcam.org/
|
|
6
6
|
Project-URL: Documentation, https://opentrafficcam.org/overview/
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from datetime import datetime, timedelta
|
|
1
2
|
from pathlib import Path
|
|
2
3
|
from unittest.mock import Mock
|
|
3
4
|
|
|
@@ -5,11 +6,92 @@ import pytest
|
|
|
5
6
|
|
|
6
7
|
from OTVision.application.config import (
|
|
7
8
|
Config,
|
|
9
|
+
DetectConfig,
|
|
8
10
|
StreamConfig,
|
|
9
11
|
TrackConfig,
|
|
12
|
+
YoloConfig,
|
|
10
13
|
_TrackIouConfig,
|
|
11
14
|
)
|
|
12
15
|
from OTVision.application.config_parser import ConfigParser, InvalidOtvisionConfigError
|
|
16
|
+
from OTVision.plugin.ffmpeg_video_writer import (
|
|
17
|
+
ConstantRateFactor,
|
|
18
|
+
EncodingSpeed,
|
|
19
|
+
VideoCodec,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
# Ensure paths are translated to the respective platform (unix, windows)
|
|
23
|
+
VIDEO_1 = str(Path("tests/data/video1.mp4"))
|
|
24
|
+
VIDEO_2 = str(Path("tests/data/video2.mp4"))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class TestConfigParser:
|
|
28
|
+
@pytest.fixture
|
|
29
|
+
def given_deserializer(self) -> Mock:
|
|
30
|
+
return Mock()
|
|
31
|
+
|
|
32
|
+
@pytest.fixture
|
|
33
|
+
def given_config_parser(self, given_deserializer: Mock) -> ConfigParser:
|
|
34
|
+
return ConfigParser(given_deserializer)
|
|
35
|
+
|
|
36
|
+
def test_parse_detect_config_with_fully_specified_config(
|
|
37
|
+
self, given_config_parser: ConfigParser
|
|
38
|
+
) -> None:
|
|
39
|
+
detect_dict = {
|
|
40
|
+
"PATHS": [VIDEO_1, VIDEO_2],
|
|
41
|
+
"RUN_CHAINED": False,
|
|
42
|
+
"YOLO": {
|
|
43
|
+
"WEIGHTS": "yolov8m.pt",
|
|
44
|
+
"CONF": 0.35,
|
|
45
|
+
"IOU": 0.5,
|
|
46
|
+
"IMGSIZE": 1280,
|
|
47
|
+
"NORMALIZED": False,
|
|
48
|
+
},
|
|
49
|
+
"EXPECTED_DURATION": 3600,
|
|
50
|
+
"OVERWRITE": False,
|
|
51
|
+
"HALF_PRECISION": True,
|
|
52
|
+
"START_TIME": "2025-10-15_14-30-00",
|
|
53
|
+
"DETECT_START": 10,
|
|
54
|
+
"DETECT_END": 100,
|
|
55
|
+
"WRITE_VIDEO": True,
|
|
56
|
+
"VIDEO_CODEC": "h264_nvenc",
|
|
57
|
+
"ENCODING_SPEED": "medium",
|
|
58
|
+
"CRF": "HIGH_QUALITY",
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
result = given_config_parser.parse_detect_config(detect_dict)
|
|
62
|
+
|
|
63
|
+
expected = DetectConfig(
|
|
64
|
+
paths=[VIDEO_1, VIDEO_2],
|
|
65
|
+
run_chained=False,
|
|
66
|
+
yolo_config=YoloConfig(
|
|
67
|
+
weights="yolov8m.pt",
|
|
68
|
+
conf=0.35,
|
|
69
|
+
iou=0.5,
|
|
70
|
+
img_size=1280,
|
|
71
|
+
normalized=False,
|
|
72
|
+
),
|
|
73
|
+
expected_duration=timedelta(seconds=3600),
|
|
74
|
+
overwrite=False,
|
|
75
|
+
half_precision=True,
|
|
76
|
+
start_time=datetime(2025, 10, 15, 14, 30, 0),
|
|
77
|
+
detect_start=10,
|
|
78
|
+
detect_end=100,
|
|
79
|
+
write_video=True,
|
|
80
|
+
video_codec=VideoCodec.H264_NVENC,
|
|
81
|
+
encoding_speed=EncodingSpeed.MEDIUM,
|
|
82
|
+
crf=ConstantRateFactor.HIGH_QUALITY,
|
|
83
|
+
)
|
|
84
|
+
assert result == expected
|
|
85
|
+
|
|
86
|
+
def test_parse_detect_config_with_empty_config(
|
|
87
|
+
self, given_config_parser: ConfigParser
|
|
88
|
+
) -> None:
|
|
89
|
+
detect_dict: dict = {}
|
|
90
|
+
|
|
91
|
+
result = given_config_parser.parse_detect_config(detect_dict)
|
|
92
|
+
|
|
93
|
+
expected = DetectConfig()
|
|
94
|
+
assert result == expected
|
|
13
95
|
|
|
14
96
|
|
|
15
97
|
class TestConfigParserValidateFlushBufferSupportTrackLifecycle:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{otvision-0.6.13 → otvision-0.6.14}/OTVision/application/detect/current_object_detector_metadata.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{otvision-0.6.13 → otvision-0.6.14}/OTVision/application/track/update_current_track_config.py
RENAMED
|
File without changes
|
{otvision-0.6.13 → otvision-0.6.14}/OTVision/application/track/update_track_config_with_cli_args.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{otvision-0.6.13 → otvision-0.6.14}/tests/application/detect/test_current_object_detector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{otvision-0.6.13 → otvision-0.6.14}/tests/application/track/test_update_current_track_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|