OTVision 0.6.9__tar.gz → 0.6.11__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.9 → otvision-0.6.11}/.github/workflows/release-pypi.yml +5 -6
- {otvision-0.6.9 → otvision-0.6.11}/.github/workflows/release-testpypi.yml +6 -6
- otvision-0.6.11/.github/workflows/test.yml +31 -0
- {otvision-0.6.9 → otvision-0.6.11}/.pre-commit-config.yaml +4 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/version.py +1 -1
- {otvision-0.6.9 → otvision-0.6.11}/PKG-INFO +29 -17
- {otvision-0.6.9 → otvision-0.6.11}/README.md +15 -12
- {otvision-0.6.9 → otvision-0.6.11}/config.yml +8 -14
- otvision-0.6.11/install.cmd +18 -0
- {otvision-0.6.9 → otvision-0.6.11}/install.sh +7 -9
- otvision-0.6.11/install_cuda.cmd +18 -0
- otvision-0.6.11/install_cuda.sh +24 -0
- otvision-0.6.11/install_dev.cmd +5 -0
- otvision-0.6.11/install_dev.sh +10 -0
- otvision-0.6.11/pyproject.toml +170 -0
- {otvision-0.6.9 → otvision-0.6.11}/update_precommit.py +10 -0
- otvision-0.6.11/uv.lock +2057 -0
- otvision-0.6.9/.github/workflows/test.yml +0 -25
- otvision-0.6.9/install.cmd +0 -16
- otvision-0.6.9/install_dev.cmd +0 -6
- otvision-0.6.9/install_dev.sh +0 -13
- otvision-0.6.9/pyproject.toml +0 -62
- otvision-0.6.9/requirements-dev.txt +0 -15
- otvision-0.6.9/requirements.txt +0 -18
- {otvision-0.6.9 → otvision-0.6.11}/.editorconfig +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.flake8 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.github/dependabot.yml +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.github/workflows/build-nightly.yml +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.github/workflows/build-release.yml +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.github/workflows/linter.yml +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.gitignore +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.vscode/launch.json +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.vscode/scripts/build_debug_env.cmd +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.vscode/scripts/build_debug_env.sh +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.vscode/scripts/teardown_debug_env.cmd +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.vscode/scripts/teardown_debug_env.sh +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.vscode/settings.json +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.vscode/tasks.json +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/.yamllint.yaml +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/LICENSE +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/abstraction/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/abstraction/defaults.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/abstraction/observer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/abstraction/pipes_and_filter.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/buffer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/config_parser.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/configure_logger.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/detect/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/detect/current_object_detector.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/detect/current_object_detector_metadata.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/detect/detected_frame_factory.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/detect/factory.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/detect/get_detect_cli_args.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/detect/timestamper.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/detect/update_detect_config_with_cli_args.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/event/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/event/new_otvision_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/event/new_video_start.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/frame_count_provider.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/get_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/get_current_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/otvision_save_path_provider.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/track/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/track/get_track_cli_args.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/track/ottrk.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/track/tracking_run_id.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/track/update_current_track_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/track/update_track_config_with_cli_args.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/update_current_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/video/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/application/video/generate_video.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/convert/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/convert/convert.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/dataformat.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/builder.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/cli.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/detect.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/detected_frame_buffer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/detected_frame_producer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/detected_frame_producer_factory.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/file_based_detect_builder.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/otdet.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/otdet_file_writer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/plugin_av/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/plugin_av/rotate_frame.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/pyav_frame_count_provider.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/rtsp_based_detect_builder.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/rtsp_input_source.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/timestamper.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/video_input_source.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/detect/yolo.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/cli.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/current_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/detect_producer_consumer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/detection.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/frame.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/input_source_detect.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/object_detection.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/serialization.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/time.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/domain/video_writer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/helpers/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/helpers/date.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/helpers/files.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/helpers/formats.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/helpers/input_types.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/helpers/log.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/helpers/machine.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/helpers/video.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/plugin/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/plugin/ffmpeg_video_writer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/plugin/generate_video.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/plugin/yaml_serialization.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/builder.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/cli.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/exporter/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/exporter/filebased_exporter.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/id_generator.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/model/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/model/filebased/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/model/filebased/frame_chunk.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/model/filebased/frame_group.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/model/track_exporter.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/model/tracking_interfaces.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/parser/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/parser/chunk_parser_plugins.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/parser/frame_group_parser_plugins.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/stream_ottrk_file_writer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/track.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/tracker/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/tracker/filebased_tracking.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/track/tracker/tracker_plugin_iou.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/transform/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/transform/get_homography.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/transform/reference_points_picker.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/transform/transform.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/view/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/view/helpers/OTC.ico +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/view/view.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/view/view_convert.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/view/view_detect.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/view/view_helpers.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/view/view_track.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision/view/view_transform.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/OTVision.bat +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/clean-up-repository.sh +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/convert.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/detect.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/export_models.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/generate_video.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/reference_points_picker.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/abstraction/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/abstraction/test_defaults.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/abstraction/test_observer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/detect/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/detect/test_current_object_detector.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/detect/test_detected_frame_factory.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/detect/test_get_detect_cli_args.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/detect/test_timestamper.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/detect/test_update_detect_config_with_cli_args.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/test_buffer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/test_config_parser.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/test_get_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/test_otvision_save_path_provider.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/track/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/track/test_get_track_cli_args.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/track/test_ottrk.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/track/test_update_current_track_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/application/track/test_update_track_config_with_cli_args.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/cli/custom_cli_test_config.yaml +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/cli/test_convert_cli.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/cli/test_detect_cli.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/cli/test_track_cli.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/conftest.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/convert/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/convert/test_convert.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_CamView.png +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_CamView_Cars-Cyclist.png +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_CamView_Cars-Truck.png +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_CamView_refpts.png +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_FR20.otrfpts +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Satellite.jpg +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/Testvideo_Satellite_far.jpg +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/fail_fps_from_filename/Testvideo_Cars-Cyclist_F20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/fail_fps_from_filename/Testvideo_Cars-Truck_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/fps_from_filename/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/fps_from_filename/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/fps_from_filename/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/fps_from_filename/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/input_fps_20/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/input_fps_20/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/input_fps_20/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/input_fps_20/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/input_fps_40/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/input_fps_40/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/input_fps_40/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/input_fps_40/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.avi +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.avi +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mkv +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mkv +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mov +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mov +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.mov +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.h264 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.mov +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/detect/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/detect/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/detect/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/detect/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/detect/rotated-Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/log/_otvision_logs/test.log +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_min_10/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_min_10/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_min_10/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_min_10/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_min_3/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_min_3/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_min_3/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_min_3/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_miss_max_25/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_miss_max_25/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_miss_max_25/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_miss_max_25/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_miss_max_75/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_miss_max_75/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_miss_max_75/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/track/t_miss_max_75/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/transform/Testvideo_FR20.otrfpts +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/yolov8m.mlpackage/Data/com.apple.CoreML/model.mlmodel +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/yolov8m.mlpackage/Data/com.apple.CoreML/weights/weight.bin +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/data/yolov8m.mlpackage/Manifest.json +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/detect_test.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/plugin_av/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/plugin_av/test_rotate_frame.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/test_detected_frame_buffer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/test_detected_frame_producer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/test_detected_frame_producer_factory.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/test_otdet.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/test_otdet_file_writer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/test_pyav_frame_count_provider.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/test_rtsp_input_source.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/test_video_input_source.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/detect/yolo_test.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/helpers/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/helpers/files_test.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/helpers/formats_test.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/helpers/test_log.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/log/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/log/log_maker.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/log/test_log.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/plugin/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/plugin/test_ffmpeg_video_file_writer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/test_config.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/helper/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/helper/data_builder.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/parser/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/parser/test_chunk_parser_plugins.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/test_frame_chunk.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/test_frame_group.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/test_frame_group_parser_plugins.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/test_stream_ottrk_file_writer.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/test_track.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/track/test_tracking_data_structures.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/transform/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/transform/test_transform.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/utils/__init__.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/utils/generator.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/tests/utils/mocking.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/track.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/transform.py +0 -0
- {otvision-0.6.9 → otvision-0.6.11}/view.py +0 -0
|
@@ -31,19 +31,18 @@ jobs:
|
|
|
31
31
|
uses: actions/setup-python@v5
|
|
32
32
|
with:
|
|
33
33
|
python-version: "3.12"
|
|
34
|
+
- name: Install uv
|
|
35
|
+
uses: astral-sh/setup-uv@v6
|
|
36
|
+
with:
|
|
37
|
+
enable-cache: true
|
|
34
38
|
- name: Update Python Package Version
|
|
35
39
|
uses: platomo/update-version-py-action@v1.0.1
|
|
36
40
|
with:
|
|
37
41
|
version: ${{ github.ref_name }}
|
|
38
42
|
file-path: "OTVision"
|
|
39
|
-
- name: Install pypa/build
|
|
40
|
-
shell: bash
|
|
41
|
-
run: |
|
|
42
|
-
python3 -m pip install build --user
|
|
43
|
-
|
|
44
43
|
- name: Build a binary wheel and a source tarball
|
|
45
44
|
shell: bash
|
|
46
|
-
run:
|
|
45
|
+
run: uv build --out-dir ${{ env.out_dir }}
|
|
47
46
|
|
|
48
47
|
- name: Store the distribution packages
|
|
49
48
|
uses: actions/upload-artifact@v4
|
|
@@ -35,6 +35,11 @@ jobs:
|
|
|
35
35
|
with:
|
|
36
36
|
python-version: "3.12"
|
|
37
37
|
|
|
38
|
+
- name: Install uv
|
|
39
|
+
uses: astral-sh/setup-uv@v6
|
|
40
|
+
with:
|
|
41
|
+
enable-cache: true
|
|
42
|
+
|
|
38
43
|
- name: Get latest tag and create new version
|
|
39
44
|
id: get_version
|
|
40
45
|
run: |
|
|
@@ -58,14 +63,9 @@ jobs:
|
|
|
58
63
|
with:
|
|
59
64
|
version: ${{ steps.get_version.outputs.new_version }}
|
|
60
65
|
file-path: "OTVision"
|
|
61
|
-
- name: Install pypa/build
|
|
62
|
-
shell: bash
|
|
63
|
-
run: |
|
|
64
|
-
python3 -m pip install build --user
|
|
65
|
-
|
|
66
66
|
- name: Build a binary wheel and a source tarball
|
|
67
67
|
shell: bash
|
|
68
|
-
run:
|
|
68
|
+
run: uv build --out-dir ${{ env.out_dir }}
|
|
69
69
|
|
|
70
70
|
- name: Store the distribution packages
|
|
71
71
|
uses: actions/upload-artifact@v4
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Test
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
# Run tests each time a PR is opened or changed.
|
|
6
|
+
# Allow other Workflows (e.g., build workflows) to call this workflow.
|
|
7
|
+
pull_request:
|
|
8
|
+
workflow_call:
|
|
9
|
+
|
|
10
|
+
permissions: read-all
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
name: Run Python tests on multiple OS and Python versions
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: True
|
|
17
|
+
matrix:
|
|
18
|
+
os: [ubuntu-latest, windows-latest]
|
|
19
|
+
py: ["3.12"]
|
|
20
|
+
runs-on: ${{ matrix.os }}
|
|
21
|
+
steps:
|
|
22
|
+
- name: Checkout repository
|
|
23
|
+
uses: actions/checkout@v4
|
|
24
|
+
- name: Run Python Tests
|
|
25
|
+
uses: platomo/test-python-app-action@v3
|
|
26
|
+
timeout-minutes: 60
|
|
27
|
+
with:
|
|
28
|
+
py-version: ${{ matrix.py }}
|
|
29
|
+
package-path: OTVision
|
|
30
|
+
ffmpeg-required: True
|
|
31
|
+
uv-sync-args: "--extra inference_cpu"
|
|
@@ -14,6 +14,10 @@ repos:
|
|
|
14
14
|
- id: requirements-txt-fixer
|
|
15
15
|
- id: check-executables-have-shebangs
|
|
16
16
|
- id: detect-private-key
|
|
17
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
18
|
+
rev: 0.8.11
|
|
19
|
+
hooks:
|
|
20
|
+
- id: uv-lock
|
|
17
21
|
- repo: local
|
|
18
22
|
hooks:
|
|
19
23
|
- id: update-type-stubs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: OTVision
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.11
|
|
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/
|
|
@@ -15,8 +15,9 @@ Classifier: Development Status :: 4 - Beta
|
|
|
15
15
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
16
16
|
Classifier: Operating System :: OS Independent
|
|
17
17
|
Classifier: Programming Language :: Python :: 3
|
|
18
|
-
Requires-Python:
|
|
18
|
+
Requires-Python: ==3.12.*
|
|
19
19
|
Requires-Dist: av==13.0.0
|
|
20
|
+
Requires-Dist: coremltools==8.2; sys_platform == 'darwin'
|
|
20
21
|
Requires-Dist: ffmpeg-python==0.2.0
|
|
21
22
|
Requires-Dist: fire==0.7.0
|
|
22
23
|
Requires-Dist: geopandas==1.0.1
|
|
@@ -28,11 +29,19 @@ Requires-Dist: numpy==2.1.1; sys_platform != 'win32'
|
|
|
28
29
|
Requires-Dist: opencv-python==4.10.0.84
|
|
29
30
|
Requires-Dist: pandas==2.2.3
|
|
30
31
|
Requires-Dist: pyyaml==6.0.2
|
|
31
|
-
Requires-Dist: torch==2.7.1
|
|
32
|
-
Requires-Dist: torchvision==0.22.1
|
|
33
32
|
Requires-Dist: tqdm==4.67.1
|
|
34
33
|
Requires-Dist: ujson==5.10.0
|
|
35
|
-
|
|
34
|
+
Provides-Extra: inference-cpu
|
|
35
|
+
Requires-Dist: torch==2.7.1; extra == 'inference-cpu'
|
|
36
|
+
Requires-Dist: torchvision==0.22.1; extra == 'inference-cpu'
|
|
37
|
+
Requires-Dist: ultralytics==8.3.159; extra == 'inference-cpu'
|
|
38
|
+
Provides-Extra: inference-cuda
|
|
39
|
+
Requires-Dist: tensorrt-cu12-bindings==10.12.0.36; (sys_platform != 'darwin') and extra == 'inference-cuda'
|
|
40
|
+
Requires-Dist: tensorrt-cu12-libs==10.12.0.36; (sys_platform != 'darwin') and extra == 'inference-cuda'
|
|
41
|
+
Requires-Dist: tensorrt==10.12.0.36; (sys_platform != 'darwin') and extra == 'inference-cuda'
|
|
42
|
+
Requires-Dist: torch==2.7.1; extra == 'inference-cuda'
|
|
43
|
+
Requires-Dist: torchvision==0.22.1; extra == 'inference-cuda'
|
|
44
|
+
Requires-Dist: ultralytics==8.3.159; extra == 'inference-cuda'
|
|
36
45
|
Description-Content-Type: text/markdown
|
|
37
46
|
|
|
38
47
|
# OTVision
|
|
@@ -41,22 +50,25 @@ Description-Content-Type: text/markdown
|
|
|
41
50
|
[](https://github.com/OpenTrafficCam/OTVision/actions/workflows/test.yml?query=tag%3Alatest)
|
|
42
51
|
[](https://github.com/OpenTrafficCam/OTVision/actions/workflows/build-release.yml)
|
|
43
52
|
|
|
44
|
-
OTVision is a core module of the [OpenTrafficCam framework](https://github.com/OpenTrafficCam)
|
|
53
|
+
OTVision is a core module of the [OpenTrafficCam framework](https://github.com/OpenTrafficCam)
|
|
54
|
+
designed to detect and track objects (road users) in videos recorded by
|
|
55
|
+
[OTCamera](https://github.com/OpenTrafficCam/OTCamera) or other camera systems.
|
|
56
|
+
The resulting trajectories can be used for traffic analysis using [OTAnalytics](https://github.com/OpenTrafficCam/OTAnalytics).
|
|
45
57
|
|
|
46
58
|
## Features
|
|
47
59
|
|
|
48
60
|
- **Video Conversion**: Convert video files (h264 to mp4) with options to set frame rate and rotation
|
|
49
61
|
- **Object Detection**: Detect road users in videos using state-of-the-art YOLO models
|
|
50
62
|
- **Object Tracking**: Track detected objects through video frames using IOU-based tracking algorithms
|
|
51
|
-
- **Coordinate Transformation**: Transform pixel coordinates to real-world UTM coordinates
|
|
52
63
|
|
|
53
64
|
## Requirements
|
|
54
65
|
|
|
55
66
|
### System Requirements
|
|
56
67
|
|
|
57
|
-
- Python 3.12
|
|
68
|
+
- Python 3.12
|
|
69
|
+
- [uv for dependency management](https://docs.astral.sh/uv/)
|
|
58
70
|
- CUDA-capable GPU (recommended for faster processing)
|
|
59
|
-
-
|
|
71
|
+
- ffmpeg (optional for video conversion)
|
|
60
72
|
|
|
61
73
|
## Installation
|
|
62
74
|
|
|
@@ -66,9 +78,9 @@ Pre-built releases are available on GitHub for easy installation:
|
|
|
66
78
|
|
|
67
79
|
1. Go to the [OTVision Releases page](https://github.com/OpenTrafficCam/OTVision/releases) on GitHub
|
|
68
80
|
2. Download the appropriate release for your platform:
|
|
69
|
-
- **Windows**: Choose between `
|
|
70
|
-
- **Linux**: Choose between `
|
|
71
|
-
- **macOS**: Choose `OTVision-macos.zip`
|
|
81
|
+
- **Windows**: Choose between `OTVision-win-{vX.Y.Z}.zip` (standard) or `OTVision-win-cuda-{vX.Y.Z}.zip` (with CUDA support)
|
|
82
|
+
- **Linux**: Choose between `OTVision-linux-{vX.Y.Z}.zip` (standard) or `OTVision-linux-cuda-{vX.Y.Z}.zip` (with CUDA support)
|
|
83
|
+
- **macOS**: Choose `OTVision-macos-{vX.Y.Z}.zip`
|
|
72
84
|
3. Extract the downloaded ZIP file
|
|
73
85
|
4. Run the installation script:
|
|
74
86
|
- On Windows: Double-click `install.cmd`
|
|
@@ -124,7 +136,7 @@ OTVision provides several command-line scripts for different functionalities:
|
|
|
124
136
|
Convert video files (e.g., h264 to mp4):
|
|
125
137
|
|
|
126
138
|
```bash
|
|
127
|
-
|
|
139
|
+
uv run convert.py --paths /path/to/videos/*.h264 --input-fps 20.0 --rotation 0
|
|
128
140
|
```
|
|
129
141
|
|
|
130
142
|
### Object Detection
|
|
@@ -132,7 +144,7 @@ python convert.py --paths /path/to/videos/*.h264 --input-fps 20.0 --rotation 0
|
|
|
132
144
|
Detect objects in videos:
|
|
133
145
|
|
|
134
146
|
```bash
|
|
135
|
-
|
|
147
|
+
uv run detect.py --paths /path/to/videos/*.mp4 --weights yolov8s
|
|
136
148
|
```
|
|
137
149
|
|
|
138
150
|
### Object Tracking
|
|
@@ -140,7 +152,7 @@ python detect.py --paths /path/to/videos/*.mp4 --weights yolov8s
|
|
|
140
152
|
Track detected objects:
|
|
141
153
|
|
|
142
154
|
```bash
|
|
143
|
-
|
|
155
|
+
uv run track.py --paths /path/to/detections/*.otdet
|
|
144
156
|
```
|
|
145
157
|
|
|
146
158
|
### Coordinate Transformation
|
|
@@ -148,7 +160,7 @@ python track.py --paths /path/to/detections/*.otdet
|
|
|
148
160
|
Transform pixel coordinates to UTM coordinates:
|
|
149
161
|
|
|
150
162
|
```bash
|
|
151
|
-
|
|
163
|
+
uv run transform.py --paths /path/to/tracks/*.ottrk --refpts-file /path/to/reference_points.json
|
|
152
164
|
```
|
|
153
165
|
|
|
154
166
|
### Configuration
|
|
@@ -156,7 +168,7 @@ python transform.py --paths /path/to/tracks/*.ottrk --refpts-file /path/to/refer
|
|
|
156
168
|
OTVision can be configured using a YAML configuration file. A default configuration is provided in `user_config.otvision.yaml`. You can specify a custom configuration file using the `--config` option:
|
|
157
169
|
|
|
158
170
|
```bash
|
|
159
|
-
|
|
171
|
+
uv run detect.py --config /path/to/custom_config.yaml
|
|
160
172
|
```
|
|
161
173
|
|
|
162
174
|
## Documentation
|
|
@@ -4,22 +4,25 @@
|
|
|
4
4
|
[](https://github.com/OpenTrafficCam/OTVision/actions/workflows/test.yml?query=tag%3Alatest)
|
|
5
5
|
[](https://github.com/OpenTrafficCam/OTVision/actions/workflows/build-release.yml)
|
|
6
6
|
|
|
7
|
-
OTVision is a core module of the [OpenTrafficCam framework](https://github.com/OpenTrafficCam)
|
|
7
|
+
OTVision is a core module of the [OpenTrafficCam framework](https://github.com/OpenTrafficCam)
|
|
8
|
+
designed to detect and track objects (road users) in videos recorded by
|
|
9
|
+
[OTCamera](https://github.com/OpenTrafficCam/OTCamera) or other camera systems.
|
|
10
|
+
The resulting trajectories can be used for traffic analysis using [OTAnalytics](https://github.com/OpenTrafficCam/OTAnalytics).
|
|
8
11
|
|
|
9
12
|
## Features
|
|
10
13
|
|
|
11
14
|
- **Video Conversion**: Convert video files (h264 to mp4) with options to set frame rate and rotation
|
|
12
15
|
- **Object Detection**: Detect road users in videos using state-of-the-art YOLO models
|
|
13
16
|
- **Object Tracking**: Track detected objects through video frames using IOU-based tracking algorithms
|
|
14
|
-
- **Coordinate Transformation**: Transform pixel coordinates to real-world UTM coordinates
|
|
15
17
|
|
|
16
18
|
## Requirements
|
|
17
19
|
|
|
18
20
|
### System Requirements
|
|
19
21
|
|
|
20
|
-
- Python 3.12
|
|
22
|
+
- Python 3.12
|
|
23
|
+
- [uv for dependency management](https://docs.astral.sh/uv/)
|
|
21
24
|
- CUDA-capable GPU (recommended for faster processing)
|
|
22
|
-
-
|
|
25
|
+
- ffmpeg (optional for video conversion)
|
|
23
26
|
|
|
24
27
|
## Installation
|
|
25
28
|
|
|
@@ -29,9 +32,9 @@ Pre-built releases are available on GitHub for easy installation:
|
|
|
29
32
|
|
|
30
33
|
1. Go to the [OTVision Releases page](https://github.com/OpenTrafficCam/OTVision/releases) on GitHub
|
|
31
34
|
2. Download the appropriate release for your platform:
|
|
32
|
-
- **Windows**: Choose between `
|
|
33
|
-
- **Linux**: Choose between `
|
|
34
|
-
- **macOS**: Choose `OTVision-macos.zip`
|
|
35
|
+
- **Windows**: Choose between `OTVision-win-{vX.Y.Z}.zip` (standard) or `OTVision-win-cuda-{vX.Y.Z}.zip` (with CUDA support)
|
|
36
|
+
- **Linux**: Choose between `OTVision-linux-{vX.Y.Z}.zip` (standard) or `OTVision-linux-cuda-{vX.Y.Z}.zip` (with CUDA support)
|
|
37
|
+
- **macOS**: Choose `OTVision-macos-{vX.Y.Z}.zip`
|
|
35
38
|
3. Extract the downloaded ZIP file
|
|
36
39
|
4. Run the installation script:
|
|
37
40
|
- On Windows: Double-click `install.cmd`
|
|
@@ -87,7 +90,7 @@ OTVision provides several command-line scripts for different functionalities:
|
|
|
87
90
|
Convert video files (e.g., h264 to mp4):
|
|
88
91
|
|
|
89
92
|
```bash
|
|
90
|
-
|
|
93
|
+
uv run convert.py --paths /path/to/videos/*.h264 --input-fps 20.0 --rotation 0
|
|
91
94
|
```
|
|
92
95
|
|
|
93
96
|
### Object Detection
|
|
@@ -95,7 +98,7 @@ python convert.py --paths /path/to/videos/*.h264 --input-fps 20.0 --rotation 0
|
|
|
95
98
|
Detect objects in videos:
|
|
96
99
|
|
|
97
100
|
```bash
|
|
98
|
-
|
|
101
|
+
uv run detect.py --paths /path/to/videos/*.mp4 --weights yolov8s
|
|
99
102
|
```
|
|
100
103
|
|
|
101
104
|
### Object Tracking
|
|
@@ -103,7 +106,7 @@ python detect.py --paths /path/to/videos/*.mp4 --weights yolov8s
|
|
|
103
106
|
Track detected objects:
|
|
104
107
|
|
|
105
108
|
```bash
|
|
106
|
-
|
|
109
|
+
uv run track.py --paths /path/to/detections/*.otdet
|
|
107
110
|
```
|
|
108
111
|
|
|
109
112
|
### Coordinate Transformation
|
|
@@ -111,7 +114,7 @@ python track.py --paths /path/to/detections/*.otdet
|
|
|
111
114
|
Transform pixel coordinates to UTM coordinates:
|
|
112
115
|
|
|
113
116
|
```bash
|
|
114
|
-
|
|
117
|
+
uv run transform.py --paths /path/to/tracks/*.ottrk --refpts-file /path/to/reference_points.json
|
|
115
118
|
```
|
|
116
119
|
|
|
117
120
|
### Configuration
|
|
@@ -119,7 +122,7 @@ python transform.py --paths /path/to/tracks/*.ottrk --refpts-file /path/to/refer
|
|
|
119
122
|
OTVision can be configured using a YAML configuration file. A default configuration is provided in `user_config.otvision.yaml`. You can specify a custom configuration file using the `--config` option:
|
|
120
123
|
|
|
121
124
|
```bash
|
|
122
|
-
|
|
125
|
+
uv run detect.py --config /path/to/custom_config.yaml
|
|
123
126
|
```
|
|
124
127
|
|
|
125
128
|
## Documentation
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
base_files:
|
|
2
2
|
- "LICENSE"
|
|
3
3
|
- "README.md"
|
|
4
|
-
- "
|
|
4
|
+
- "pyproject.toml"
|
|
5
5
|
- "user_config.otvision.yaml"
|
|
6
6
|
- "track.py"
|
|
7
7
|
- "detect.py"
|
|
@@ -28,26 +28,20 @@ configurations:
|
|
|
28
28
|
suffix: "macos"
|
|
29
29
|
output_file_name: OTVision
|
|
30
30
|
additional_requirements:
|
|
31
|
-
- "
|
|
31
|
+
- ""
|
|
32
32
|
- package_path: OTVision
|
|
33
33
|
files:
|
|
34
|
-
- source: "
|
|
34
|
+
- source: "install_cuda.cmd"
|
|
35
|
+
destination: "install.cmd"
|
|
35
36
|
suffix: "win-cuda"
|
|
36
37
|
output_file_name: otvision
|
|
37
38
|
additional_requirements:
|
|
38
|
-
- "
|
|
39
|
-
- "--extra-index-url https://download.pytorch.org/whl/cu128"
|
|
40
|
-
- "tensorrt==10.12.0.36"
|
|
41
|
-
- "tensorrt-cu12-bindings==10.12.0.36"
|
|
42
|
-
- "tensorrt-cu12-libs==10.12.0.36"
|
|
39
|
+
- ""
|
|
43
40
|
- package_path: OTVision
|
|
44
41
|
files:
|
|
45
|
-
- source: "
|
|
42
|
+
- source: "install_cuda.sh"
|
|
43
|
+
destination: "install.sh"
|
|
46
44
|
suffix: "linux-cuda"
|
|
47
45
|
output_file_name: OTVision
|
|
48
46
|
additional_requirements:
|
|
49
|
-
- "
|
|
50
|
-
- "--extra-index-url https://download.pytorch.org/whl/cu128"
|
|
51
|
-
- "tensorrt==10.12.0.36"
|
|
52
|
-
- "tensorrt-cu12-bindings==10.12.0.36"
|
|
53
|
-
- "tensorrt-cu12-libs==10.12.0.36"
|
|
47
|
+
- ""
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
echo Install OTVision.
|
|
2
|
+
@echo off
|
|
3
|
+
FOR /F "tokens=* USEBACKQ" %%F IN (`python --version`) DO SET "PYTHON_VERSION=%%F"
|
|
4
|
+
|
|
5
|
+
echo %PYTHON_VERSION%
|
|
6
|
+
if "x%PYTHON_VERSION:3.12=%"=="x%PYTHON_VERSION%" (
|
|
7
|
+
echo "Python Version 3.12 is not installed in environment." & cmd /K & exit
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
REM Check if uv is available globally, if not install it
|
|
11
|
+
where uv >nul 2>nul
|
|
12
|
+
if %errorlevel% neq 0 (
|
|
13
|
+
echo uv not found globally, installing uv...
|
|
14
|
+
powershell -ExecutionPolicy Bypass -Command "& {irm https://astral.sh/uv/install.ps1 | iex}"
|
|
15
|
+
set "PATH=%USERPROFILE%\.cargo\bin;%PATH%"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
uv sync --extra inference_cpu --no-dev
|
|
@@ -13,14 +13,12 @@ echo "Install OTVision."
|
|
|
13
13
|
|
|
14
14
|
echo "$DIR"
|
|
15
15
|
cd "$DIR" || exit
|
|
16
|
-
WORKING_DIR=$(pwd)
|
|
17
|
-
VENV="$WORKING_DIR"/.venv
|
|
18
|
-
PYTHON="$VENV"/bin/python
|
|
19
|
-
PIP="$VENV"/bin/pip
|
|
20
|
-
UV="$VENV"/bin/uv
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
# Check if uv is available globally, if not install it
|
|
18
|
+
if ! command -v uv &>/dev/null; then
|
|
19
|
+
echo "uv not found globally, installing uv..."
|
|
20
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
21
|
+
export PATH="$HOME/.cargo/bin:$PATH"
|
|
22
|
+
fi
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
$PIP install uv
|
|
26
|
-
$UV pip install -r requirements.txt --index-strategy unsafe-best-match --python .venv
|
|
24
|
+
uv sync --extra inference_cpu --no-dev
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
echo Install OTVision.
|
|
2
|
+
@echo off
|
|
3
|
+
FOR /F "tokens=* USEBACKQ" %%F IN (`python --version`) DO SET "PYTHON_VERSION=%%F"
|
|
4
|
+
|
|
5
|
+
echo %PYTHON_VERSION%
|
|
6
|
+
if "x%PYTHON_VERSION:3.12=%"=="x%PYTHON_VERSION%" (
|
|
7
|
+
echo "Python Version 3.12 is not installed in environment." & cmd /K & exit
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
REM Check if uv is available globally, if not install it
|
|
11
|
+
where uv >nul 2>nul
|
|
12
|
+
if %errorlevel% neq 0 (
|
|
13
|
+
echo uv not found globally, installing uv...
|
|
14
|
+
powershell -ExecutionPolicy Bypass -Command "& {irm https://astral.sh/uv/install.ps1 | iex}"
|
|
15
|
+
set "PATH=%USERPROFILE%\.cargo\bin;%PATH%"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
uv sync --extra inference_cuda --no-dev
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
SOURCE=${BASH_SOURCE[0]}
|
|
4
|
+
while [ -L "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
|
5
|
+
DIR=$(cd -P "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)
|
|
6
|
+
SOURCE=$(readlink "$SOURCE")
|
|
7
|
+
[[ $SOURCE != /* ]] && SOURCE=$DIR/$SOURCE # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
|
|
8
|
+
done
|
|
9
|
+
DIR=$(cd -P "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)
|
|
10
|
+
|
|
11
|
+
set -e
|
|
12
|
+
echo "Install OTVision."
|
|
13
|
+
|
|
14
|
+
echo "$DIR"
|
|
15
|
+
cd "$DIR" || exit
|
|
16
|
+
|
|
17
|
+
# Check if uv is available globally, if not install it
|
|
18
|
+
if ! command -v uv &>/dev/null; then
|
|
19
|
+
echo "uv not found globally, installing uv..."
|
|
20
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
21
|
+
export PATH="$HOME/.cargo/bin:$PATH"
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
uv sync --extra inference_cuda --no-dev
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "OTVision"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
authors = [
|
|
9
|
+
{ name="OpenTrafficCam contributors", email="team@opentrafficcam.org" },
|
|
10
|
+
{ name="platomo GmbH", email="info@platomo.de" },
|
|
11
|
+
]
|
|
12
|
+
description = "OTVision is a core module of the OpenTrafficCam framework to perform object detection and tracking."
|
|
13
|
+
|
|
14
|
+
readme = "README.md"
|
|
15
|
+
requires-python = "==3.12.*"
|
|
16
|
+
license = "GPL-3.0-only"
|
|
17
|
+
license-files = ["LICENSE"]
|
|
18
|
+
classifiers = [
|
|
19
|
+
"Development Status :: 4 - Beta",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
22
|
+
"Operating System :: OS Independent",
|
|
23
|
+
]
|
|
24
|
+
keywords = ["OpenTrafficCam", "Traffic Analysis", "Traffic Counting", "Trajectories"]
|
|
25
|
+
dependencies = [
|
|
26
|
+
"av==13.0.0",
|
|
27
|
+
"coremltools==8.2; sys_platform == 'darwin'",
|
|
28
|
+
"ffmpeg-python==0.2.0",
|
|
29
|
+
"fire==0.7.0",
|
|
30
|
+
"geopandas==1.0.1",
|
|
31
|
+
"ijson==3.3.0",
|
|
32
|
+
"more-itertools==10.7.0",
|
|
33
|
+
"moviepy==1.0.3",
|
|
34
|
+
"numpy==2.1.1; sys_platform != 'win32'",
|
|
35
|
+
"numpy==1.26.4; sys_platform == 'win32'",
|
|
36
|
+
"opencv-python==4.10.0.84",
|
|
37
|
+
"pandas==2.2.3",
|
|
38
|
+
"PyYAML==6.0.2",
|
|
39
|
+
"tqdm==4.67.1",
|
|
40
|
+
"ujson==5.10.0",
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
[dependency-groups]
|
|
44
|
+
dev = [
|
|
45
|
+
"black==25.1.0",
|
|
46
|
+
"flake8==7.1.1",
|
|
47
|
+
"interrogate==1.5.0",
|
|
48
|
+
"isort==5.13.2",
|
|
49
|
+
"jsonschema==4.23.0",
|
|
50
|
+
"mypy==1.15.0",
|
|
51
|
+
"pandas-stubs==2.2.3.250308",
|
|
52
|
+
"pre-commit==3.8.0",
|
|
53
|
+
"pytest==8.3.3",
|
|
54
|
+
"pytest-cov==5.0.0",
|
|
55
|
+
"twine==6.1.0",
|
|
56
|
+
"yamllint==1.35.1",
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
[project.optional-dependencies]
|
|
60
|
+
inference_cpu = [
|
|
61
|
+
"torch==2.7.1",
|
|
62
|
+
"torchvision==0.22.1",
|
|
63
|
+
"ultralytics==8.3.159",
|
|
64
|
+
]
|
|
65
|
+
inference_cuda = [
|
|
66
|
+
"torch==2.7.1",
|
|
67
|
+
"torchvision==0.22.1",
|
|
68
|
+
"tensorrt==10.12.0.36; sys_platform != 'darwin'",
|
|
69
|
+
"tensorrt-cu12-bindings==10.12.0.36; sys_platform != 'darwin'",
|
|
70
|
+
"tensorrt-cu12-libs==10.12.0.36; sys_platform != 'darwin'",
|
|
71
|
+
"ultralytics==8.3.159",
|
|
72
|
+
]
|
|
73
|
+
[project.urls]
|
|
74
|
+
Homepage = "https://opentrafficcam.org/"
|
|
75
|
+
Documentation = "https://opentrafficcam.org/overview/"
|
|
76
|
+
Repository = "https://github.com/OpenTrafficCam/OTVision"
|
|
77
|
+
Issues = "https://github.com/OpenTrafficCam/OTVision/issues"
|
|
78
|
+
Changelog = "https://github.com/OpenTrafficCam/OTVision/releases"
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
[tool.hatch.version]
|
|
82
|
+
path = "OTVision/version.py"
|
|
83
|
+
|
|
84
|
+
[tool.hatch.build.targets.wheel]
|
|
85
|
+
packages = ["OTVision"]
|
|
86
|
+
|
|
87
|
+
[tool.hatch.build]
|
|
88
|
+
directory = "dist"
|
|
89
|
+
|
|
90
|
+
[tool.black]
|
|
91
|
+
line-length = 88
|
|
92
|
+
|
|
93
|
+
[tool.isort]
|
|
94
|
+
profile = "black"
|
|
95
|
+
|
|
96
|
+
[tool.mypy]
|
|
97
|
+
ignore_missing_imports = true
|
|
98
|
+
ignore_missing_imports_per_module = true
|
|
99
|
+
disallow_untyped_defs = true
|
|
100
|
+
|
|
101
|
+
[[tool.mypy.overrides]]
|
|
102
|
+
module = "OTVision.view.*"
|
|
103
|
+
ignore_errors = true
|
|
104
|
+
|
|
105
|
+
[[tool.mypy.overrides]]
|
|
106
|
+
module = "OTVision.transform.*"
|
|
107
|
+
ignore_errors = true
|
|
108
|
+
|
|
109
|
+
[[tool.uv.dependency-metadata]]
|
|
110
|
+
name = "tensorrt-cu12"
|
|
111
|
+
requires-dist = ["tensorrt-cu12-bindings", "tensorrt-cu12-libs"]
|
|
112
|
+
|
|
113
|
+
[[tool.uv.dependency-metadata]]
|
|
114
|
+
name = "tensorrt-cu12-libs"
|
|
115
|
+
requires-dist = ["nvidia-cuda-runtime-cu12"]
|
|
116
|
+
|
|
117
|
+
[[tool.uv.dependency-metadata]]
|
|
118
|
+
name = "nvidia-cuda-runtime-cu12"
|
|
119
|
+
|
|
120
|
+
[[tool.uv.dependency-metadata]]
|
|
121
|
+
name = "tensorrt-cu12-bindings"
|
|
122
|
+
|
|
123
|
+
[[tool.uv.dependency-metadata]]
|
|
124
|
+
name = "tensorrt-cu12-libs"
|
|
125
|
+
|
|
126
|
+
[tool.uv]
|
|
127
|
+
environments = [
|
|
128
|
+
"sys_platform == 'win32'",
|
|
129
|
+
"sys_platform == 'darwin'",
|
|
130
|
+
"sys_platform == 'linux'",
|
|
131
|
+
]
|
|
132
|
+
conflicts = [
|
|
133
|
+
[
|
|
134
|
+
{ extra = "inference_cpu" },
|
|
135
|
+
{ extra = "inference_cuda" },
|
|
136
|
+
],
|
|
137
|
+
]
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
[tool.uv.sources]
|
|
141
|
+
torch = [
|
|
142
|
+
{ index = "pytorch-cu128", marker = "sys_platform != 'darwin'" , extra = "inference_cuda" },
|
|
143
|
+
{ index = "pytorch-cpu", marker = "sys_platform == 'darwin'" },
|
|
144
|
+
{ index = "pytorch-cpu", marker = "sys_platform == 'linux'", extra="inference_cpu" },
|
|
145
|
+
{ index = "pytorch-cpu", marker = "sys_platform == 'win32'", extra="inference_cpu" }
|
|
146
|
+
]
|
|
147
|
+
torchvision = [
|
|
148
|
+
{ index = "pytorch-cu128", marker = "sys_platform != 'darwin'" , extra = "inference_cuda" },
|
|
149
|
+
{ index = "pytorch-cpu", marker = "sys_platform == 'darwin'" },
|
|
150
|
+
{ index = "pytorch-cpu", marker = "sys_platform == 'linux'", extra="inference_cpu" },
|
|
151
|
+
{ index = "pytorch-cpu", marker = "sys_platform == 'win32'", extra="inference_cpu" }
|
|
152
|
+
]
|
|
153
|
+
tensorrt = { index = "tensorrt", extra = "inference_cuda" }
|
|
154
|
+
tensorrt-cu12-bindings = { index = "tensorrt", extra = "inference_cuda" }
|
|
155
|
+
tensorrt-cu12-libs = { index = "tensorrt", extra = "inference_cuda" }
|
|
156
|
+
|
|
157
|
+
[[tool.uv.index]]
|
|
158
|
+
name = "pytorch-cpu"
|
|
159
|
+
url = "https://download.pytorch.org/whl/cpu"
|
|
160
|
+
explicit = true
|
|
161
|
+
|
|
162
|
+
[[tool.uv.index]]
|
|
163
|
+
name = "pytorch-cu128"
|
|
164
|
+
url = "https://download.pytorch.org/whl/cu128"
|
|
165
|
+
explicit = true
|
|
166
|
+
|
|
167
|
+
[[tool.uv.index]]
|
|
168
|
+
name = "tensorrt"
|
|
169
|
+
url = "https://pypi.nvidia.com/"
|
|
170
|
+
explicit = true
|
|
@@ -127,6 +127,16 @@ class CustomDumper(yaml.SafeDumper):
|
|
|
127
127
|
def increase_indent(self, flow: bool = False, indentless: bool = False) -> None:
|
|
128
128
|
return super(CustomDumper, self).increase_indent(flow, False)
|
|
129
129
|
|
|
130
|
+
def choose_scalar_style(self) -> str:
|
|
131
|
+
# Get the default style choice
|
|
132
|
+
style = super().choose_scalar_style()
|
|
133
|
+
|
|
134
|
+
# If the default choice is single quotes, change to double quotes
|
|
135
|
+
if style == "'":
|
|
136
|
+
return '"'
|
|
137
|
+
|
|
138
|
+
return style
|
|
139
|
+
|
|
130
140
|
|
|
131
141
|
def parse_multiple_requirements_file(
|
|
132
142
|
files: Iterable[Path],
|