OTVision 0.6.10__tar.gz → 0.6.12__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.10 → otvision-0.6.12}/.github/workflows/test.yml +2 -1
- {otvision-0.6.10 → otvision-0.6.12}/.pre-commit-config.yaml +4 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/version.py +1 -1
- {otvision-0.6.10 → otvision-0.6.12}/PKG-INFO +28 -23
- {otvision-0.6.10 → otvision-0.6.12}/README.md +15 -12
- {otvision-0.6.10 → otvision-0.6.12}/install.cmd +2 -3
- {otvision-0.6.10 → otvision-0.6.12}/install.sh +1 -4
- {otvision-0.6.10 → otvision-0.6.12}/install_cuda.cmd +2 -3
- {otvision-0.6.10 → otvision-0.6.12}/install_cuda.sh +1 -4
- otvision-0.6.12/install_dev.cmd +5 -0
- otvision-0.6.12/install_dev.sh +10 -0
- {otvision-0.6.10 → otvision-0.6.12}/pyproject.toml +28 -15
- {otvision-0.6.10 → otvision-0.6.12}/uv.lock +387 -263
- otvision-0.6.10/install_dev.cmd +0 -5
- otvision-0.6.10/install_dev.sh +0 -12
- {otvision-0.6.10 → otvision-0.6.12}/.editorconfig +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.flake8 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.github/dependabot.yml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/build-nightly.yml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/build-release.yml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/linter.yml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/release-pypi.yml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/release-testpypi.yml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.gitignore +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.vscode/launch.json +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.vscode/scripts/build_debug_env.cmd +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.vscode/scripts/build_debug_env.sh +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.vscode/scripts/teardown_debug_env.cmd +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.vscode/scripts/teardown_debug_env.sh +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.vscode/settings.json +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.vscode/tasks.json +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/.yamllint.yaml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/LICENSE +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/abstraction/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/abstraction/defaults.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/abstraction/observer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/abstraction/pipes_and_filter.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/buffer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/config_parser.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/configure_logger.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/current_object_detector.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/current_object_detector_metadata.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/detected_frame_factory.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/factory.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/get_detect_cli_args.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/timestamper.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/update_detect_config_with_cli_args.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/event/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/event/new_otvision_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/event/new_video_start.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/frame_count_provider.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/get_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/get_current_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/otvision_save_path_provider.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/get_track_cli_args.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/ottrk.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/tracking_run_id.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/update_current_track_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/update_track_config_with_cli_args.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/update_current_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/video/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/video/generate_video.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/convert/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/convert/convert.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/dataformat.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/builder.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/cli.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/detect.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/detected_frame_buffer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/detected_frame_producer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/detected_frame_producer_factory.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/file_based_detect_builder.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/otdet.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/otdet_file_writer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/plugin_av/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/plugin_av/rotate_frame.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/pyav_frame_count_provider.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/rtsp_based_detect_builder.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/rtsp_input_source.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/timestamper.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/video_input_source.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/yolo.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/cli.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/current_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/detect_producer_consumer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/detection.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/frame.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/input_source_detect.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/object_detection.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/serialization.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/time.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/video_writer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/date.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/files.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/formats.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/input_types.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/log.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/machine.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/video.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/plugin/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/plugin/ffmpeg_video_writer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/plugin/generate_video.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/plugin/yaml_serialization.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/builder.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/cli.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/exporter/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/exporter/filebased_exporter.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/id_generator.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/filebased/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/filebased/frame_chunk.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/filebased/frame_group.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/track_exporter.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/tracking_interfaces.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/parser/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/parser/chunk_parser_plugins.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/parser/frame_group_parser_plugins.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/stream_ottrk_file_writer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/track.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/tracker/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/tracker/filebased_tracking.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/tracker/tracker_plugin_iou.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/transform/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/transform/get_homography.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/transform/reference_points_picker.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/transform/transform.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/helpers/OTC.ico +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_convert.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_detect.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_helpers.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_track.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_transform.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/OTVision.bat +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/clean-up-repository.sh +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/config.yml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/convert.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/detect.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/export_models.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/generate_video.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/reference_points_picker.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/abstraction/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/abstraction/test_defaults.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/abstraction/test_observer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_current_object_detector.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_detected_frame_factory.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_get_detect_cli_args.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_timestamper.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_update_detect_config_with_cli_args.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/test_buffer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/test_config_parser.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/test_get_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/test_otvision_save_path_provider.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/test_get_track_cli_args.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/test_ottrk.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/test_update_current_track_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/test_update_track_config_with_cli_args.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/cli/custom_cli_test_config.yaml +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/cli/test_convert_cli.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/cli/test_detect_cli.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/cli/test_track_cli.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/conftest.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/convert/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/convert/test_convert.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_CamView.png +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_CamView_Cars-Cyclist.png +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_CamView_Cars-Truck.png +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_CamView_refpts.png +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_FR20.otrfpts +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Satellite.jpg +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Satellite_far.jpg +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/fail_fps_from_filename/Testvideo_Cars-Cyclist_F20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/fail_fps_from_filename/Testvideo_Cars-Truck_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/fps_from_filename/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/fps_from_filename/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/fps_from_filename/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/fps_from_filename/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/input_fps_20/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/input_fps_20/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/input_fps_20/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/input_fps_20/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/input_fps_40/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/input_fps_40/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/input_fps_40/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/input_fps_40/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.avi +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.avi +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_avi/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mkv +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mkv/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mkv +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mov +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mov/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mov +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/output_filetype_mp4/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.mov +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/rotation/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00_rotate.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.h264 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.mov +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/convert/rotation/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00_rotate.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/detect/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/detect/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/detect/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/detect/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/detect/rotated-Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/log/_otvision_logs/test.log +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/default/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/default/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_h_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_h_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_iou_0_2/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_iou_0_6/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_l_0_1/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/sigma_l_0_5/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_min_10/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_min_10/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_min_10/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_min_10/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_min_3/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_min_3/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_min_3/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_min_3/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_miss_max_25/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_miss_max_25/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_miss_max_25/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_miss_max_25/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_miss_max_75/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_miss_max_75/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_miss_max_75/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/track/t_miss_max_75/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.gpkg +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otrfpts +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_FR20.otrfpts +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/yolov8m.mlpackage/Data/com.apple.CoreML/model.mlmodel +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/yolov8m.mlpackage/Data/com.apple.CoreML/weights/weight.bin +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/data/yolov8m.mlpackage/Manifest.json +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/detect_test.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/plugin_av/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/plugin_av/test_rotate_frame.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_detected_frame_buffer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_detected_frame_producer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_detected_frame_producer_factory.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_otdet.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_otdet_file_writer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_pyav_frame_count_provider.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_rtsp_input_source.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_video_input_source.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/detect/yolo_test.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/helpers/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/helpers/files_test.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/helpers/formats_test.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/helpers/test_log.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/log/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/log/log_maker.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/log/test_log.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/plugin/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/plugin/test_ffmpeg_video_file_writer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/test_config.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/helper/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/helper/data_builder.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/parser/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/parser/test_chunk_parser_plugins.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_frame_chunk.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_frame_group.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_frame_group_parser_plugins.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_stream_ottrk_file_writer.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_track.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_tracking_data_structures.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/transform/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/transform/test_transform.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/utils/__init__.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/utils/generator.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/tests/utils/mocking.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/track.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/transform.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/update_precommit.py +0 -0
- {otvision-0.6.10 → otvision-0.6.12}/view.py +0 -0
|
@@ -22,9 +22,10 @@ jobs:
|
|
|
22
22
|
- name: Checkout repository
|
|
23
23
|
uses: actions/checkout@v4
|
|
24
24
|
- name: Run Python Tests
|
|
25
|
-
uses: platomo/test-python-app-action@
|
|
25
|
+
uses: platomo/test-python-app-action@v3
|
|
26
26
|
timeout-minutes: 60
|
|
27
27
|
with:
|
|
28
28
|
py-version: ${{ matrix.py }}
|
|
29
29
|
package-path: OTVision
|
|
30
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.12
|
|
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/
|
|
@@ -26,20 +26,22 @@ Requires-Dist: more-itertools==10.7.0
|
|
|
26
26
|
Requires-Dist: moviepy==1.0.3
|
|
27
27
|
Requires-Dist: numpy==1.26.4; sys_platform == 'win32'
|
|
28
28
|
Requires-Dist: numpy==2.1.1; sys_platform != 'win32'
|
|
29
|
-
Requires-Dist: opencv-python==4.10.0.84
|
|
29
|
+
Requires-Dist: opencv-python-headless==4.10.0.84
|
|
30
30
|
Requires-Dist: pandas==2.2.3
|
|
31
31
|
Requires-Dist: pyyaml==6.0.2
|
|
32
|
-
Requires-Dist: torch==2.7.1
|
|
33
|
-
Requires-Dist: torchvision==0.22.1
|
|
34
32
|
Requires-Dist: tqdm==4.67.1
|
|
35
33
|
Requires-Dist: ujson==5.10.0
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
40
|
-
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist:
|
|
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'
|
|
43
45
|
Description-Content-Type: text/markdown
|
|
44
46
|
|
|
45
47
|
# OTVision
|
|
@@ -48,22 +50,25 @@ Description-Content-Type: text/markdown
|
|
|
48
50
|
[](https://github.com/OpenTrafficCam/OTVision/actions/workflows/test.yml?query=tag%3Alatest)
|
|
49
51
|
[](https://github.com/OpenTrafficCam/OTVision/actions/workflows/build-release.yml)
|
|
50
52
|
|
|
51
|
-
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).
|
|
52
57
|
|
|
53
58
|
## Features
|
|
54
59
|
|
|
55
60
|
- **Video Conversion**: Convert video files (h264 to mp4) with options to set frame rate and rotation
|
|
56
61
|
- **Object Detection**: Detect road users in videos using state-of-the-art YOLO models
|
|
57
62
|
- **Object Tracking**: Track detected objects through video frames using IOU-based tracking algorithms
|
|
58
|
-
- **Coordinate Transformation**: Transform pixel coordinates to real-world UTM coordinates
|
|
59
63
|
|
|
60
64
|
## Requirements
|
|
61
65
|
|
|
62
66
|
### System Requirements
|
|
63
67
|
|
|
64
|
-
- Python 3.12
|
|
68
|
+
- Python 3.12
|
|
69
|
+
- [uv for dependency management](https://docs.astral.sh/uv/)
|
|
65
70
|
- CUDA-capable GPU (recommended for faster processing)
|
|
66
|
-
-
|
|
71
|
+
- ffmpeg (optional for video conversion)
|
|
67
72
|
|
|
68
73
|
## Installation
|
|
69
74
|
|
|
@@ -73,9 +78,9 @@ Pre-built releases are available on GitHub for easy installation:
|
|
|
73
78
|
|
|
74
79
|
1. Go to the [OTVision Releases page](https://github.com/OpenTrafficCam/OTVision/releases) on GitHub
|
|
75
80
|
2. Download the appropriate release for your platform:
|
|
76
|
-
- **Windows**: Choose between `
|
|
77
|
-
- **Linux**: Choose between `
|
|
78
|
-
- **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`
|
|
79
84
|
3. Extract the downloaded ZIP file
|
|
80
85
|
4. Run the installation script:
|
|
81
86
|
- On Windows: Double-click `install.cmd`
|
|
@@ -131,7 +136,7 @@ OTVision provides several command-line scripts for different functionalities:
|
|
|
131
136
|
Convert video files (e.g., h264 to mp4):
|
|
132
137
|
|
|
133
138
|
```bash
|
|
134
|
-
|
|
139
|
+
uv run convert.py --paths /path/to/videos/*.h264 --input-fps 20.0 --rotation 0
|
|
135
140
|
```
|
|
136
141
|
|
|
137
142
|
### Object Detection
|
|
@@ -139,7 +144,7 @@ python convert.py --paths /path/to/videos/*.h264 --input-fps 20.0 --rotation 0
|
|
|
139
144
|
Detect objects in videos:
|
|
140
145
|
|
|
141
146
|
```bash
|
|
142
|
-
|
|
147
|
+
uv run detect.py --paths /path/to/videos/*.mp4 --weights yolov8s
|
|
143
148
|
```
|
|
144
149
|
|
|
145
150
|
### Object Tracking
|
|
@@ -147,7 +152,7 @@ python detect.py --paths /path/to/videos/*.mp4 --weights yolov8s
|
|
|
147
152
|
Track detected objects:
|
|
148
153
|
|
|
149
154
|
```bash
|
|
150
|
-
|
|
155
|
+
uv run track.py --paths /path/to/detections/*.otdet
|
|
151
156
|
```
|
|
152
157
|
|
|
153
158
|
### Coordinate Transformation
|
|
@@ -155,7 +160,7 @@ python track.py --paths /path/to/detections/*.otdet
|
|
|
155
160
|
Transform pixel coordinates to UTM coordinates:
|
|
156
161
|
|
|
157
162
|
```bash
|
|
158
|
-
|
|
163
|
+
uv run transform.py --paths /path/to/tracks/*.ottrk --refpts-file /path/to/reference_points.json
|
|
159
164
|
```
|
|
160
165
|
|
|
161
166
|
### Configuration
|
|
@@ -163,7 +168,7 @@ python transform.py --paths /path/to/tracks/*.ottrk --refpts-file /path/to/refer
|
|
|
163
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:
|
|
164
169
|
|
|
165
170
|
```bash
|
|
166
|
-
|
|
171
|
+
uv run detect.py --config /path/to/custom_config.yaml
|
|
167
172
|
```
|
|
168
173
|
|
|
169
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
|
|
@@ -9,11 +9,10 @@ if "x%PYTHON_VERSION:3.12=%"=="x%PYTHON_VERSION%" (
|
|
|
9
9
|
|
|
10
10
|
REM Check if uv is available globally, if not install it
|
|
11
11
|
where uv >nul 2>nul
|
|
12
|
-
if errorlevel neq 0 (
|
|
12
|
+
if %errorlevel% neq 0 (
|
|
13
13
|
echo uv not found globally, installing uv...
|
|
14
14
|
powershell -ExecutionPolicy Bypass -Command "& {irm https://astral.sh/uv/install.ps1 | iex}"
|
|
15
15
|
set "PATH=%USERPROFILE%\.cargo\bin;%PATH%"
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
-
uv
|
|
19
|
-
uv sync --python .venv%
|
|
18
|
+
uv sync --extra inference_cpu --no-dev
|
|
@@ -13,8 +13,6 @@ echo "Install OTVision."
|
|
|
13
13
|
|
|
14
14
|
echo "$DIR"
|
|
15
15
|
cd "$DIR" || exit
|
|
16
|
-
WORKING_DIR=$(pwd)
|
|
17
|
-
VENV="$WORKING_DIR"/.venv
|
|
18
16
|
|
|
19
17
|
# Check if uv is available globally, if not install it
|
|
20
18
|
if ! command -v uv &>/dev/null; then
|
|
@@ -23,5 +21,4 @@ if ! command -v uv &>/dev/null; then
|
|
|
23
21
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
24
22
|
fi
|
|
25
23
|
|
|
26
|
-
uv
|
|
27
|
-
uv sync --python "$VENV"
|
|
24
|
+
uv sync --extra inference_cpu --no-dev
|
|
@@ -9,11 +9,10 @@ if "x%PYTHON_VERSION:3.12=%"=="x%PYTHON_VERSION%" (
|
|
|
9
9
|
|
|
10
10
|
REM Check if uv is available globally, if not install it
|
|
11
11
|
where uv >nul 2>nul
|
|
12
|
-
if errorlevel neq 0 (
|
|
12
|
+
if %errorlevel% neq 0 (
|
|
13
13
|
echo uv not found globally, installing uv...
|
|
14
14
|
powershell -ExecutionPolicy Bypass -Command "& {irm https://astral.sh/uv/install.ps1 | iex}"
|
|
15
15
|
set "PATH=%USERPROFILE%\.cargo\bin;%PATH%"
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
-
uv
|
|
19
|
-
uv sync --extra cuda --python .venv
|
|
18
|
+
uv sync --extra inference_cuda --no-dev
|
|
@@ -13,8 +13,6 @@ echo "Install OTVision."
|
|
|
13
13
|
|
|
14
14
|
echo "$DIR"
|
|
15
15
|
cd "$DIR" || exit
|
|
16
|
-
WORKING_DIR=$(pwd)
|
|
17
|
-
VENV="$WORKING_DIR"/.venv
|
|
18
16
|
|
|
19
17
|
# Check if uv is available globally, if not install it
|
|
20
18
|
if ! command -v uv &>/dev/null; then
|
|
@@ -23,5 +21,4 @@ if ! command -v uv &>/dev/null; then
|
|
|
23
21
|
export PATH="$HOME/.cargo/bin:$PATH"
|
|
24
22
|
fi
|
|
25
23
|
|
|
26
|
-
uv
|
|
27
|
-
uv sync --extra cuda --python "$VENV"
|
|
24
|
+
uv sync --extra inference_cuda --no-dev
|
|
@@ -33,14 +33,11 @@ dependencies = [
|
|
|
33
33
|
"moviepy==1.0.3",
|
|
34
34
|
"numpy==2.1.1; sys_platform != 'win32'",
|
|
35
35
|
"numpy==1.26.4; sys_platform == 'win32'",
|
|
36
|
-
"opencv-python==4.10.0.84",
|
|
36
|
+
"opencv-python-headless==4.10.0.84",
|
|
37
37
|
"pandas==2.2.3",
|
|
38
38
|
"PyYAML==6.0.2",
|
|
39
|
-
"torch==2.7.1",
|
|
40
|
-
"torchvision==0.22.1",
|
|
41
39
|
"tqdm==4.67.1",
|
|
42
40
|
"ujson==5.10.0",
|
|
43
|
-
"ultralytics==8.3.159",
|
|
44
41
|
]
|
|
45
42
|
|
|
46
43
|
[dependency-groups]
|
|
@@ -60,12 +57,18 @@ dev = [
|
|
|
60
57
|
]
|
|
61
58
|
|
|
62
59
|
[project.optional-dependencies]
|
|
63
|
-
|
|
64
|
-
"torch",
|
|
65
|
-
"torchvision",
|
|
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",
|
|
66
68
|
"tensorrt==10.12.0.36; sys_platform != 'darwin'",
|
|
67
69
|
"tensorrt-cu12-bindings==10.12.0.36; sys_platform != 'darwin'",
|
|
68
70
|
"tensorrt-cu12-libs==10.12.0.36; sys_platform != 'darwin'",
|
|
71
|
+
"ultralytics==8.3.159",
|
|
69
72
|
]
|
|
70
73
|
[project.urls]
|
|
71
74
|
Homepage = "https://opentrafficcam.org/"
|
|
@@ -121,25 +124,35 @@ name = "tensorrt-cu12-bindings"
|
|
|
121
124
|
name = "tensorrt-cu12-libs"
|
|
122
125
|
|
|
123
126
|
[tool.uv]
|
|
124
|
-
default-groups = []
|
|
125
127
|
environments = [
|
|
126
128
|
"sys_platform == 'win32'",
|
|
127
129
|
"sys_platform == 'darwin'",
|
|
128
130
|
"sys_platform == 'linux'",
|
|
129
131
|
]
|
|
132
|
+
conflicts = [
|
|
133
|
+
[
|
|
134
|
+
{ extra = "inference_cpu" },
|
|
135
|
+
{ extra = "inference_cuda" },
|
|
136
|
+
],
|
|
137
|
+
]
|
|
138
|
+
|
|
130
139
|
|
|
131
140
|
[tool.uv.sources]
|
|
132
141
|
torch = [
|
|
133
|
-
|
|
134
|
-
|
|
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" }
|
|
135
146
|
]
|
|
136
147
|
torchvision = [
|
|
137
|
-
|
|
138
|
-
|
|
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" }
|
|
139
152
|
]
|
|
140
|
-
tensorrt = { index = "tensorrt", extra = "
|
|
141
|
-
tensorrt-cu12-bindings = { index = "tensorrt", extra = "
|
|
142
|
-
tensorrt-cu12-libs = { index = "tensorrt", extra = "
|
|
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" }
|
|
143
156
|
|
|
144
157
|
[[tool.uv.index]]
|
|
145
158
|
name = "pytorch-cpu"
|