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.
Files changed (341) hide show
  1. {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/test.yml +2 -1
  2. {otvision-0.6.10 → otvision-0.6.12}/.pre-commit-config.yaml +4 -0
  3. {otvision-0.6.10 → otvision-0.6.12}/OTVision/version.py +1 -1
  4. {otvision-0.6.10 → otvision-0.6.12}/PKG-INFO +28 -23
  5. {otvision-0.6.10 → otvision-0.6.12}/README.md +15 -12
  6. {otvision-0.6.10 → otvision-0.6.12}/install.cmd +2 -3
  7. {otvision-0.6.10 → otvision-0.6.12}/install.sh +1 -4
  8. {otvision-0.6.10 → otvision-0.6.12}/install_cuda.cmd +2 -3
  9. {otvision-0.6.10 → otvision-0.6.12}/install_cuda.sh +1 -4
  10. otvision-0.6.12/install_dev.cmd +5 -0
  11. otvision-0.6.12/install_dev.sh +10 -0
  12. {otvision-0.6.10 → otvision-0.6.12}/pyproject.toml +28 -15
  13. {otvision-0.6.10 → otvision-0.6.12}/uv.lock +387 -263
  14. otvision-0.6.10/install_dev.cmd +0 -5
  15. otvision-0.6.10/install_dev.sh +0 -12
  16. {otvision-0.6.10 → otvision-0.6.12}/.editorconfig +0 -0
  17. {otvision-0.6.10 → otvision-0.6.12}/.flake8 +0 -0
  18. {otvision-0.6.10 → otvision-0.6.12}/.github/dependabot.yml +0 -0
  19. {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/build-nightly.yml +0 -0
  20. {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/build-release.yml +0 -0
  21. {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/linter.yml +0 -0
  22. {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/release-pypi.yml +0 -0
  23. {otvision-0.6.10 → otvision-0.6.12}/.github/workflows/release-testpypi.yml +0 -0
  24. {otvision-0.6.10 → otvision-0.6.12}/.gitignore +0 -0
  25. {otvision-0.6.10 → otvision-0.6.12}/.vscode/launch.json +0 -0
  26. {otvision-0.6.10 → otvision-0.6.12}/.vscode/scripts/build_debug_env.cmd +0 -0
  27. {otvision-0.6.10 → otvision-0.6.12}/.vscode/scripts/build_debug_env.sh +0 -0
  28. {otvision-0.6.10 → otvision-0.6.12}/.vscode/scripts/teardown_debug_env.cmd +0 -0
  29. {otvision-0.6.10 → otvision-0.6.12}/.vscode/scripts/teardown_debug_env.sh +0 -0
  30. {otvision-0.6.10 → otvision-0.6.12}/.vscode/settings.json +0 -0
  31. {otvision-0.6.10 → otvision-0.6.12}/.vscode/tasks.json +0 -0
  32. {otvision-0.6.10 → otvision-0.6.12}/.yamllint.yaml +0 -0
  33. {otvision-0.6.10 → otvision-0.6.12}/LICENSE +0 -0
  34. {otvision-0.6.10 → otvision-0.6.12}/OTVision/__init__.py +0 -0
  35. {otvision-0.6.10 → otvision-0.6.12}/OTVision/abstraction/__init__.py +0 -0
  36. {otvision-0.6.10 → otvision-0.6.12}/OTVision/abstraction/defaults.py +0 -0
  37. {otvision-0.6.10 → otvision-0.6.12}/OTVision/abstraction/observer.py +0 -0
  38. {otvision-0.6.10 → otvision-0.6.12}/OTVision/abstraction/pipes_and_filter.py +0 -0
  39. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/__init__.py +0 -0
  40. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/buffer.py +0 -0
  41. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/config.py +0 -0
  42. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/config_parser.py +0 -0
  43. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/configure_logger.py +0 -0
  44. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/__init__.py +0 -0
  45. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/current_object_detector.py +0 -0
  46. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/current_object_detector_metadata.py +0 -0
  47. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/detected_frame_factory.py +0 -0
  48. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/factory.py +0 -0
  49. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/get_detect_cli_args.py +0 -0
  50. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/timestamper.py +0 -0
  51. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/detect/update_detect_config_with_cli_args.py +0 -0
  52. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/event/__init__.py +0 -0
  53. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/event/new_otvision_config.py +0 -0
  54. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/event/new_video_start.py +0 -0
  55. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/frame_count_provider.py +0 -0
  56. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/get_config.py +0 -0
  57. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/get_current_config.py +0 -0
  58. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/otvision_save_path_provider.py +0 -0
  59. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/__init__.py +0 -0
  60. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/get_track_cli_args.py +0 -0
  61. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/ottrk.py +0 -0
  62. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/tracking_run_id.py +0 -0
  63. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/update_current_track_config.py +0 -0
  64. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/track/update_track_config_with_cli_args.py +0 -0
  65. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/update_current_config.py +0 -0
  66. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/video/__init__.py +0 -0
  67. {otvision-0.6.10 → otvision-0.6.12}/OTVision/application/video/generate_video.py +0 -0
  68. {otvision-0.6.10 → otvision-0.6.12}/OTVision/config.py +0 -0
  69. {otvision-0.6.10 → otvision-0.6.12}/OTVision/convert/__init__.py +0 -0
  70. {otvision-0.6.10 → otvision-0.6.12}/OTVision/convert/convert.py +0 -0
  71. {otvision-0.6.10 → otvision-0.6.12}/OTVision/dataformat.py +0 -0
  72. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/__init__.py +0 -0
  73. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/builder.py +0 -0
  74. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/cli.py +0 -0
  75. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/detect.py +0 -0
  76. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/detected_frame_buffer.py +0 -0
  77. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/detected_frame_producer.py +0 -0
  78. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/detected_frame_producer_factory.py +0 -0
  79. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/file_based_detect_builder.py +0 -0
  80. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/otdet.py +0 -0
  81. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/otdet_file_writer.py +0 -0
  82. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/plugin_av/__init__.py +0 -0
  83. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/plugin_av/rotate_frame.py +0 -0
  84. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/pyav_frame_count_provider.py +0 -0
  85. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/rtsp_based_detect_builder.py +0 -0
  86. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/rtsp_input_source.py +0 -0
  87. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/timestamper.py +0 -0
  88. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/video_input_source.py +0 -0
  89. {otvision-0.6.10 → otvision-0.6.12}/OTVision/detect/yolo.py +0 -0
  90. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/__init__.py +0 -0
  91. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/cli.py +0 -0
  92. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/current_config.py +0 -0
  93. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/detect_producer_consumer.py +0 -0
  94. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/detection.py +0 -0
  95. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/frame.py +0 -0
  96. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/input_source_detect.py +0 -0
  97. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/object_detection.py +0 -0
  98. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/serialization.py +0 -0
  99. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/time.py +0 -0
  100. {otvision-0.6.10 → otvision-0.6.12}/OTVision/domain/video_writer.py +0 -0
  101. {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/__init__.py +0 -0
  102. {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/date.py +0 -0
  103. {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/files.py +0 -0
  104. {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/formats.py +0 -0
  105. {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/input_types.py +0 -0
  106. {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/log.py +0 -0
  107. {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/machine.py +0 -0
  108. {otvision-0.6.10 → otvision-0.6.12}/OTVision/helpers/video.py +0 -0
  109. {otvision-0.6.10 → otvision-0.6.12}/OTVision/plugin/__init__.py +0 -0
  110. {otvision-0.6.10 → otvision-0.6.12}/OTVision/plugin/ffmpeg_video_writer.py +0 -0
  111. {otvision-0.6.10 → otvision-0.6.12}/OTVision/plugin/generate_video.py +0 -0
  112. {otvision-0.6.10 → otvision-0.6.12}/OTVision/plugin/yaml_serialization.py +0 -0
  113. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/__init__.py +0 -0
  114. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/builder.py +0 -0
  115. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/cli.py +0 -0
  116. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/exporter/__init__.py +0 -0
  117. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/exporter/filebased_exporter.py +0 -0
  118. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/id_generator.py +0 -0
  119. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/__init__.py +0 -0
  120. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/filebased/__init__.py +0 -0
  121. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/filebased/frame_chunk.py +0 -0
  122. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/filebased/frame_group.py +0 -0
  123. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/track_exporter.py +0 -0
  124. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/model/tracking_interfaces.py +0 -0
  125. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/parser/__init__.py +0 -0
  126. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/parser/chunk_parser_plugins.py +0 -0
  127. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/parser/frame_group_parser_plugins.py +0 -0
  128. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/stream_ottrk_file_writer.py +0 -0
  129. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/track.py +0 -0
  130. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/tracker/__init__.py +0 -0
  131. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/tracker/filebased_tracking.py +0 -0
  132. {otvision-0.6.10 → otvision-0.6.12}/OTVision/track/tracker/tracker_plugin_iou.py +0 -0
  133. {otvision-0.6.10 → otvision-0.6.12}/OTVision/transform/__init__.py +0 -0
  134. {otvision-0.6.10 → otvision-0.6.12}/OTVision/transform/get_homography.py +0 -0
  135. {otvision-0.6.10 → otvision-0.6.12}/OTVision/transform/reference_points_picker.py +0 -0
  136. {otvision-0.6.10 → otvision-0.6.12}/OTVision/transform/transform.py +0 -0
  137. {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/__init__.py +0 -0
  138. {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/helpers/OTC.ico +0 -0
  139. {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view.py +0 -0
  140. {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_convert.py +0 -0
  141. {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_detect.py +0 -0
  142. {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_helpers.py +0 -0
  143. {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_track.py +0 -0
  144. {otvision-0.6.10 → otvision-0.6.12}/OTVision/view/view_transform.py +0 -0
  145. {otvision-0.6.10 → otvision-0.6.12}/OTVision.bat +0 -0
  146. {otvision-0.6.10 → otvision-0.6.12}/clean-up-repository.sh +0 -0
  147. {otvision-0.6.10 → otvision-0.6.12}/config.yml +0 -0
  148. {otvision-0.6.10 → otvision-0.6.12}/convert.py +0 -0
  149. {otvision-0.6.10 → otvision-0.6.12}/detect.py +0 -0
  150. {otvision-0.6.10 → otvision-0.6.12}/export_models.py +0 -0
  151. {otvision-0.6.10 → otvision-0.6.12}/generate_video.py +0 -0
  152. {otvision-0.6.10 → otvision-0.6.12}/reference_points_picker.py +0 -0
  153. {otvision-0.6.10 → otvision-0.6.12}/tests/__init__.py +0 -0
  154. {otvision-0.6.10 → otvision-0.6.12}/tests/abstraction/__init__.py +0 -0
  155. {otvision-0.6.10 → otvision-0.6.12}/tests/abstraction/test_defaults.py +0 -0
  156. {otvision-0.6.10 → otvision-0.6.12}/tests/abstraction/test_observer.py +0 -0
  157. {otvision-0.6.10 → otvision-0.6.12}/tests/application/__init__.py +0 -0
  158. {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/__init__.py +0 -0
  159. {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_current_object_detector.py +0 -0
  160. {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_detected_frame_factory.py +0 -0
  161. {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_get_detect_cli_args.py +0 -0
  162. {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_timestamper.py +0 -0
  163. {otvision-0.6.10 → otvision-0.6.12}/tests/application/detect/test_update_detect_config_with_cli_args.py +0 -0
  164. {otvision-0.6.10 → otvision-0.6.12}/tests/application/test_buffer.py +0 -0
  165. {otvision-0.6.10 → otvision-0.6.12}/tests/application/test_config_parser.py +0 -0
  166. {otvision-0.6.10 → otvision-0.6.12}/tests/application/test_get_config.py +0 -0
  167. {otvision-0.6.10 → otvision-0.6.12}/tests/application/test_otvision_save_path_provider.py +0 -0
  168. {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/__init__.py +0 -0
  169. {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/test_get_track_cli_args.py +0 -0
  170. {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/test_ottrk.py +0 -0
  171. {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/test_update_current_track_config.py +0 -0
  172. {otvision-0.6.10 → otvision-0.6.12}/tests/application/track/test_update_track_config_with_cli_args.py +0 -0
  173. {otvision-0.6.10 → otvision-0.6.12}/tests/cli/custom_cli_test_config.yaml +0 -0
  174. {otvision-0.6.10 → otvision-0.6.12}/tests/cli/test_convert_cli.py +0 -0
  175. {otvision-0.6.10 → otvision-0.6.12}/tests/cli/test_detect_cli.py +0 -0
  176. {otvision-0.6.10 → otvision-0.6.12}/tests/cli/test_track_cli.py +0 -0
  177. {otvision-0.6.10 → otvision-0.6.12}/tests/conftest.py +0 -0
  178. {otvision-0.6.10 → otvision-0.6.12}/tests/convert/__init__.py +0 -0
  179. {otvision-0.6.10 → otvision-0.6.12}/tests/convert/test_convert.py +0 -0
  180. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_CamView.png +0 -0
  181. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_CamView_Cars-Cyclist.png +0 -0
  182. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_CamView_Cars-Truck.png +0 -0
  183. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_CamView_refpts.png +0 -0
  184. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.gpkg +0 -0
  185. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.h264 +0 -0
  186. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
  187. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otdet +0 -0
  188. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otrfpts +0 -0
  189. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
  190. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.gpkg +0 -0
  191. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.h264 +0 -0
  192. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
  193. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otdet +0 -0
  194. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otrfpts +0 -0
  195. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
  196. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_FR20.otrfpts +0 -0
  197. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Satellite.jpg +0 -0
  198. {otvision-0.6.10 → otvision-0.6.12}/tests/data/Testvideo_Satellite_far.jpg +0 -0
  199. {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
  200. {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
  201. {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
  202. {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
  203. {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
  204. {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
  205. {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
  206. {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
  207. {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
  208. {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
  209. {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
  210. {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
  211. {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
  212. {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
  213. {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
  214. {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
  215. {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
  216. {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
  217. {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
  218. {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
  219. {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
  220. {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
  221. {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
  222. {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
  223. {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
  224. {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
  225. {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
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {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
  233. {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
  234. {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
  235. {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
  236. {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
  237. {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
  238. {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
  239. {otvision-0.6.10 → otvision-0.6.12}/tests/data/detect/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.mp4 +0 -0
  240. {otvision-0.6.10 → otvision-0.6.12}/tests/data/detect/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.mp4 +0 -0
  241. {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
  242. {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
  243. {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
  244. {otvision-0.6.10 → otvision-0.6.12}/tests/data/log/_otvision_logs/test.log +0 -0
  245. {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
  246. {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
  247. {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
  248. {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
  249. {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
  250. {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
  251. {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
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {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
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {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
  269. {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
  270. {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
  271. {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
  272. {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
  273. {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
  274. {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
  275. {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
  276. {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
  277. {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
  278. {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
  279. {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
  280. {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
  281. {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
  282. {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
  283. {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
  284. {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
  285. {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
  286. {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
  287. {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
  288. {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
  289. {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.gpkg +0 -0
  290. {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.otrfpts +0 -0
  291. {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Cyclist_FR20_2020-01-01_00-00-00.ottrk +0 -0
  292. {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.gpkg +0 -0
  293. {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.otrfpts +0 -0
  294. {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_Cars-Truck_FR20_2020-01-01_00-00-00.ottrk +0 -0
  295. {otvision-0.6.10 → otvision-0.6.12}/tests/data/transform/Testvideo_FR20.otrfpts +0 -0
  296. {otvision-0.6.10 → otvision-0.6.12}/tests/data/yolov8m.mlpackage/Data/com.apple.CoreML/model.mlmodel +0 -0
  297. {otvision-0.6.10 → otvision-0.6.12}/tests/data/yolov8m.mlpackage/Data/com.apple.CoreML/weights/weight.bin +0 -0
  298. {otvision-0.6.10 → otvision-0.6.12}/tests/data/yolov8m.mlpackage/Manifest.json +0 -0
  299. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/__init__.py +0 -0
  300. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/detect_test.py +0 -0
  301. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/plugin_av/__init__.py +0 -0
  302. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/plugin_av/test_rotate_frame.py +0 -0
  303. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_detected_frame_buffer.py +0 -0
  304. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_detected_frame_producer.py +0 -0
  305. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_detected_frame_producer_factory.py +0 -0
  306. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_otdet.py +0 -0
  307. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_otdet_file_writer.py +0 -0
  308. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_pyav_frame_count_provider.py +0 -0
  309. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_rtsp_input_source.py +0 -0
  310. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/test_video_input_source.py +0 -0
  311. {otvision-0.6.10 → otvision-0.6.12}/tests/detect/yolo_test.py +0 -0
  312. {otvision-0.6.10 → otvision-0.6.12}/tests/helpers/__init__.py +0 -0
  313. {otvision-0.6.10 → otvision-0.6.12}/tests/helpers/files_test.py +0 -0
  314. {otvision-0.6.10 → otvision-0.6.12}/tests/helpers/formats_test.py +0 -0
  315. {otvision-0.6.10 → otvision-0.6.12}/tests/helpers/test_log.py +0 -0
  316. {otvision-0.6.10 → otvision-0.6.12}/tests/log/__init__.py +0 -0
  317. {otvision-0.6.10 → otvision-0.6.12}/tests/log/log_maker.py +0 -0
  318. {otvision-0.6.10 → otvision-0.6.12}/tests/log/test_log.py +0 -0
  319. {otvision-0.6.10 → otvision-0.6.12}/tests/plugin/__init__.py +0 -0
  320. {otvision-0.6.10 → otvision-0.6.12}/tests/plugin/test_ffmpeg_video_file_writer.py +0 -0
  321. {otvision-0.6.10 → otvision-0.6.12}/tests/test_config.py +0 -0
  322. {otvision-0.6.10 → otvision-0.6.12}/tests/track/__init__.py +0 -0
  323. {otvision-0.6.10 → otvision-0.6.12}/tests/track/helper/__init__.py +0 -0
  324. {otvision-0.6.10 → otvision-0.6.12}/tests/track/helper/data_builder.py +0 -0
  325. {otvision-0.6.10 → otvision-0.6.12}/tests/track/parser/__init__.py +0 -0
  326. {otvision-0.6.10 → otvision-0.6.12}/tests/track/parser/test_chunk_parser_plugins.py +0 -0
  327. {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_frame_chunk.py +0 -0
  328. {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_frame_group.py +0 -0
  329. {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_frame_group_parser_plugins.py +0 -0
  330. {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_stream_ottrk_file_writer.py +0 -0
  331. {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_track.py +0 -0
  332. {otvision-0.6.10 → otvision-0.6.12}/tests/track/test_tracking_data_structures.py +0 -0
  333. {otvision-0.6.10 → otvision-0.6.12}/tests/transform/__init__.py +0 -0
  334. {otvision-0.6.10 → otvision-0.6.12}/tests/transform/test_transform.py +0 -0
  335. {otvision-0.6.10 → otvision-0.6.12}/tests/utils/__init__.py +0 -0
  336. {otvision-0.6.10 → otvision-0.6.12}/tests/utils/generator.py +0 -0
  337. {otvision-0.6.10 → otvision-0.6.12}/tests/utils/mocking.py +0 -0
  338. {otvision-0.6.10 → otvision-0.6.12}/track.py +0 -0
  339. {otvision-0.6.10 → otvision-0.6.12}/transform.py +0 -0
  340. {otvision-0.6.10 → otvision-0.6.12}/update_precommit.py +0 -0
  341. {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@v2
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,4 +1,4 @@
1
- __version__ = "v0.6.10"
1
+ __version__ = "v0.6.12"
2
2
 
3
3
 
4
4
  def otdet_version() -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OTVision
3
- Version: 0.6.10
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
- Requires-Dist: ultralytics==8.3.159
37
- Provides-Extra: cuda
38
- Requires-Dist: tensorrt-cu12-bindings==10.12.0.36; (sys_platform != 'darwin') and extra == 'cuda'
39
- Requires-Dist: tensorrt-cu12-libs==10.12.0.36; (sys_platform != 'darwin') and extra == 'cuda'
40
- Requires-Dist: tensorrt==10.12.0.36; (sys_platform != 'darwin') and extra == 'cuda'
41
- Requires-Dist: torch; extra == 'cuda'
42
- Requires-Dist: torchvision; extra == 'cuda'
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
  [![Tests](https://github.com/OpenTrafficCam/OTVision/actions/workflows/test.yml/badge.svg?tag=latest)](https://github.com/OpenTrafficCam/OTVision/actions/workflows/test.yml?query=tag%3Alatest)
49
51
  [![Tests](https://github.com/OpenTrafficCam/OTVision/actions/workflows/build-release.yml/badge.svg)](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) designed to detect and track objects (road users) in videos recorded by [OTCamera](https://github.com/OpenTrafficCam/OTCamera) or other camera systems. The resulting trajectories can be used for traffic analysis using [OTAnalytics](https://github.com/OpenTrafficCam/OTAnalytics).
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 or higher
68
+ - Python 3.12
69
+ - [uv for dependency management](https://docs.astral.sh/uv/)
65
70
  - CUDA-capable GPU (recommended for faster processing)
66
- - Dependencies listed in [requirements.txt](requirements.txt)
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 `otvision-win.zip` (standard) or `otvision-win-cuda.zip` (with CUDA support)
77
- - **Linux**: Choose between `otvision-linux.zip` (standard) or `otvision-linux-cuda.zip` (with CUDA support)
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
- python convert.py --paths /path/to/videos/*.h264 --input-fps 20.0 --rotation 0
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
- python detect.py --paths /path/to/videos/*.mp4 --weights yolov8s
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
- python track.py --paths /path/to/detections/*.otdet
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
- python transform.py --paths /path/to/tracks/*.ottrk --refpts-file /path/to/reference_points.json
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
- python detect.py --config /path/to/custom_config.yaml
171
+ uv run detect.py --config /path/to/custom_config.yaml
167
172
  ```
168
173
 
169
174
  ## Documentation
@@ -4,22 +4,25 @@
4
4
  [![Tests](https://github.com/OpenTrafficCam/OTVision/actions/workflows/test.yml/badge.svg?tag=latest)](https://github.com/OpenTrafficCam/OTVision/actions/workflows/test.yml?query=tag%3Alatest)
5
5
  [![Tests](https://github.com/OpenTrafficCam/OTVision/actions/workflows/build-release.yml/badge.svg)](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) designed to detect and track objects (road users) in videos recorded by [OTCamera](https://github.com/OpenTrafficCam/OTCamera) or other camera systems. The resulting trajectories can be used for traffic analysis using [OTAnalytics](https://github.com/OpenTrafficCam/OTAnalytics).
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 or higher
22
+ - Python 3.12
23
+ - [uv for dependency management](https://docs.astral.sh/uv/)
21
24
  - CUDA-capable GPU (recommended for faster processing)
22
- - Dependencies listed in [requirements.txt](requirements.txt)
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 `otvision-win.zip` (standard) or `otvision-win-cuda.zip` (with CUDA support)
33
- - **Linux**: Choose between `otvision-linux.zip` (standard) or `otvision-linux-cuda.zip` (with CUDA support)
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
- python convert.py --paths /path/to/videos/*.h264 --input-fps 20.0 --rotation 0
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
- python detect.py --paths /path/to/videos/*.mp4 --weights yolov8s
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
- python track.py --paths /path/to/detections/*.otdet
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
- python transform.py --paths /path/to/tracks/*.ottrk --refpts-file /path/to/reference_points.json
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
- python detect.py --config /path/to/custom_config.yaml
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 venv .venv
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 venv "$VENV"
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 venv .venv
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 venv "$VENV"
27
- uv sync --extra cuda --python "$VENV"
24
+ uv sync --extra inference_cuda --no-dev
@@ -0,0 +1,5 @@
1
+ echo Install OTVision development environment.
2
+ call install.cmd
3
+
4
+ uv sync --extra inference_cpu
5
+ uv run pre-commit install --install-hooks
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+ set -e
3
+ echo "Install OTVision development environment."
4
+
5
+ WORKING_DIR=$(pwd)
6
+
7
+ bash "$WORKING_DIR"/install.sh
8
+
9
+ uv sync --extra inference_cpu
10
+ uv run pre-commit install --install-hooks
@@ -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
- cuda = [
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
- { index = "pytorch-cpu", marker = "sys_platform == 'darwin'" },
134
- { index = "pytorch-cu128", marker = "sys_platform != 'darwin'" , extra = "cuda" }
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
- { index = "pytorch-cpu", marker = "sys_platform == 'darwin'" },
138
- { index = "pytorch-cu128", marker = "sys_platform != 'darwin'" , extra = "cuda" }
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 = "cuda" }
141
- tensorrt-cu12-bindings = { index = "tensorrt", extra = "cuda" }
142
- tensorrt-cu12-libs = { index = "tensorrt", extra = "cuda" }
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"