sciveo 0.1.83__tar.gz → 0.1.85__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 (191) hide show
  1. {sciveo-0.1.83 → sciveo-0.1.85}/PKG-INFO +1 -1
  2. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/cli.py +8 -2
  3. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/gst_server.py +47 -3
  4. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/rpi.py +7 -4
  5. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/evaluation/object_detection.py +11 -5
  6. sciveo-0.1.85/sciveo/version.py +2 -0
  7. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo.egg-info/PKG-INFO +1 -1
  8. sciveo-0.1.83/sciveo/version.py +0 -2
  9. {sciveo-0.1.83 → sciveo-0.1.85}/README.md +0 -0
  10. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/__init__.py +0 -0
  11. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/api/__init__.py +0 -0
  12. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/api/base.py +0 -0
  13. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/api/predictors.py +0 -0
  14. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/api/server.py +0 -0
  15. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/api/upload.py +0 -0
  16. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/common/__init__.py +0 -0
  17. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/common/configuration.py +0 -0
  18. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/common/model.py +0 -0
  19. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/common/optimizers.py +0 -0
  20. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/common/sampling.py +0 -0
  21. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/content/__init__.py +0 -0
  22. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/content/dataset.py +0 -0
  23. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/content/experiment.py +0 -0
  24. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/content/project.py +0 -0
  25. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/content/runner.py +0 -0
  26. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/db/__init__.py +0 -0
  27. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/db/read_table.py +0 -0
  28. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/__init__.py +0 -0
  29. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/__init__.py +0 -0
  30. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/cam.py +0 -0
  31. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/draw.py +0 -0
  32. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/__init__.py +0 -0
  33. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/__init__.py +0 -0
  34. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/asteroid.py +0 -0
  35. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/base_move.py +0 -0
  36. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/circle.py +0 -0
  37. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/game.py +0 -0
  38. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/geometrics.py +0 -0
  39. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/gravity_ball.py +0 -0
  40. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/laser.py +0 -0
  41. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/rocket.py +0 -0
  42. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/space_asteroids.py +0 -0
  43. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/games/asteroids/volume_bar.py +0 -0
  44. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/motion_detection.py +0 -0
  45. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/nvr.py +0 -0
  46. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/readers.py +0 -0
  47. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/capture/rtsp.py +0 -0
  48. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/__init__.py +0 -0
  49. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/base.py +0 -0
  50. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/encoders/__init__.py +0 -0
  51. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/encoders/base.py +0 -0
  52. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/encoders/normalizer.py +0 -0
  53. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/nlp/__init__.py +0 -0
  54. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/nlp/search.py +0 -0
  55. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/time_series/__init__.py +0 -0
  56. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/time_series/dataset.py +0 -0
  57. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/time_series/predictor.py +0 -0
  58. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/time_series/trainer.py +0 -0
  59. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/ml/time_series/window_generator.py +0 -0
  60. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/__init__.py +0 -0
  61. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/base.py +0 -0
  62. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/job_daemon.py +0 -0
  63. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/layouts/__init__.py +0 -0
  64. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/layouts/base.py +0 -0
  65. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/pipeline.py +0 -0
  66. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/postprocessors/__init__.py +0 -0
  67. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/postprocessors/base.py +0 -0
  68. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/postprocessors/default.py +0 -0
  69. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/__init__.py +0 -0
  70. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/audio/__init__.py +0 -0
  71. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/audio/audio.py +0 -0
  72. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/audio/audio_extractor_process.py +0 -0
  73. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/aws.py +0 -0
  74. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/base.py +0 -0
  75. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/file/__init__.py +0 -0
  76. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/file/archive.py +0 -0
  77. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/__init__.py +0 -0
  78. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/album.py +0 -0
  79. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/album_in_image.py +0 -0
  80. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/depth_esimation.py +0 -0
  81. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/embeddings.py +0 -0
  82. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/filters.py +0 -0
  83. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/generators.py +0 -0
  84. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/histogram.py +0 -0
  85. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/mask.py +0 -0
  86. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/object_detection.py +0 -0
  87. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/resize.py +0 -0
  88. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/segmentation.py +0 -0
  89. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/image/watermark.py +0 -0
  90. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/media_info.py +0 -0
  91. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/nlp/__init__.py +0 -0
  92. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/nlp/address.py +0 -0
  93. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/qr.py +0 -0
  94. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/sci/__init__.py +0 -0
  95. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/sci/base.py +0 -0
  96. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/sci/dataset.py +0 -0
  97. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/sci/time_series/__init__.py +0 -0
  98. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/sci/time_series/predictor.py +0 -0
  99. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/sci/time_series/trainer.py +0 -0
  100. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/tpu_base.py +0 -0
  101. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/video/__init__.py +0 -0
  102. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/video/generators.py +0 -0
  103. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/video/motion_detection.py +0 -0
  104. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/video/resize.py +0 -0
  105. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/video/video_album.py +0 -0
  106. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/video/video_frames.py +0 -0
  107. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/processors/video/video_resample.py +0 -0
  108. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/queues.py +0 -0
  109. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/server.py +0 -0
  110. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/web/__init__.py +0 -0
  111. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/pipelines/web/server.py +0 -0
  112. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/tools/__init__.py +0 -0
  113. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/media/tools/video_interactive.py +0 -0
  114. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/__init__.py +0 -0
  115. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/base.py +0 -0
  116. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/dataset/__init__.py +0 -0
  117. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/dataset/object_detection.py +0 -0
  118. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/evaluation/__init__.py +0 -0
  119. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/evaluation/markdown.py +0 -0
  120. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/images/__init__.py +0 -0
  121. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/images/base.py +0 -0
  122. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/images/description.py +0 -0
  123. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/images/embeddings.py +0 -0
  124. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/images/object_detection.py +0 -0
  125. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/images/tools.py +0 -0
  126. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/images/transformers.py +0 -0
  127. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/nlp/__init__.py +0 -0
  128. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/nlp/embeddings.py +0 -0
  129. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/nlp/tokenizers/__init__.py +0 -0
  130. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/nlp/tokenizers/bpe.py +0 -0
  131. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/video/__init__.py +0 -0
  132. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/ml/video/description.py +0 -0
  133. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/__init__.py +0 -0
  134. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/monitor.py +0 -0
  135. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/power/__init__.py +0 -0
  136. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/power/ems300.py +0 -0
  137. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/power/sim.py +0 -0
  138. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/power/tools.py +0 -0
  139. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/start.py +0 -0
  140. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/watchdog/__init__.py +0 -0
  141. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/watchdog/base.py +0 -0
  142. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/monitoring/watchdog/process.py +0 -0
  143. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/network/__init__.py +0 -0
  144. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/network/camera.py +0 -0
  145. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/network/sniffer.py +0 -0
  146. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/network/tools.py +0 -0
  147. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/__init__.py +0 -0
  148. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/array.py +0 -0
  149. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/aws/__init__.py +0 -0
  150. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/aws/priority_queue.py +0 -0
  151. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/aws/s3.py +0 -0
  152. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/common.py +0 -0
  153. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/complexity.py +0 -0
  154. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/compress.py +0 -0
  155. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/configuration.py +0 -0
  156. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/crypto.py +0 -0
  157. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/daemon.py +0 -0
  158. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/draw/__init__.py +0 -0
  159. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/draw/contours.py +0 -0
  160. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/formating.py +0 -0
  161. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/hardware.py +0 -0
  162. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/http.py +0 -0
  163. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/logger.py +0 -0
  164. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/os.py +0 -0
  165. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/queue.py +0 -0
  166. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/random.py +0 -0
  167. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/remote.py +0 -0
  168. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/simple_counter.py +0 -0
  169. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/synchronized.py +0 -0
  170. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/timers.py +0 -0
  171. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/tools/totp.py +0 -0
  172. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/web/__init__.py +0 -0
  173. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo/web/common.py +0 -0
  174. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo.egg-info/SOURCES.txt +0 -0
  175. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo.egg-info/dependency_links.txt +0 -0
  176. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo.egg-info/entry_points.txt +0 -0
  177. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo.egg-info/requires.txt +0 -0
  178. {sciveo-0.1.83 → sciveo-0.1.85}/sciveo.egg-info/top_level.txt +0 -0
  179. {sciveo-0.1.83 → sciveo-0.1.85}/setup.cfg +0 -0
  180. {sciveo-0.1.83 → sciveo-0.1.85}/setup.py +0 -0
  181. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_complexity.py +0 -0
  182. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_compress.py +0 -0
  183. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_configuration.py +0 -0
  184. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_crypto.py +0 -0
  185. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_eval_markdown.py +0 -0
  186. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_ml_datasets.py +0 -0
  187. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_monitoring.py +0 -0
  188. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_runner.py +0 -0
  189. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_sampling.py +0 -0
  190. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_tokenizers.py +0 -0
  191. {sciveo-0.1.83 → sciveo-0.1.85}/test/test_totp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sciveo
3
- Version: 0.1.83
3
+ Version: 0.1.85
4
4
  Description-Content-Type: text/markdown
5
5
  Provides-Extra: mon
6
6
  Provides-Extra: net
@@ -61,6 +61,7 @@ def main():
61
61
  parser.add_argument('--pid', type=int, default=None, help='Process PID')
62
62
  parser.add_argument('--serial', type=str, default=None, help='Serial Name')
63
63
  parser.add_argument('--data-json', type=str, default="{}", help='Json Data')
64
+ parser.add_argument('--display', type=int, default=None, help='Display number')
64
65
 
65
66
  args = parser.parse_args()
66
67
 
@@ -113,7 +114,7 @@ def main():
113
114
  player = RTSPVideoPlayer(url)
114
115
  player.run()
115
116
  else:
116
- from sciveo.media.capture.gst_server import CamFactory, ColorBarFactory
117
+ from sciveo.media.capture.gst_server import CamFactory, ColorBarFactory, CamDisplayDaemon
117
118
  data = json.loads(args.data_json)
118
119
  if args.src_id is not None:
119
120
  server = CamFactory(args.src_id, args.width, args.height, args.fps, configuration=data)
@@ -123,7 +124,12 @@ def main():
123
124
  else:
124
125
  # warning("RTSP src", args.src, "not recognised")
125
126
  server = CamFactory(args.src, args.width, args.height, args.fps, configuration=data)
126
- server.serve(host=args.host, port=args.port, stream=args.stream)
127
+ if args.display is not None:
128
+ display_daemon = CamDisplayDaemon(server, host=args.host, port=args.port, stream=args.stream, display=args.display)
129
+ display_daemon.start()
130
+ display_daemon.display()
131
+ else:
132
+ server.serve(host=args.host, port=args.port, stream=args.stream)
127
133
  elif args.command == 'media-server':
128
134
  from sciveo.media.pipelines.server import __START_SCIVEO_MEDIA_SERVER__
129
135
  __START_SCIVEO_MEDIA_SERVER__()
@@ -10,6 +10,8 @@
10
10
  #
11
11
 
12
12
  import numpy as np
13
+ import time
14
+ import cv2
13
15
 
14
16
  import gi
15
17
  gi.require_version('Gst', '1.0')
@@ -18,6 +20,7 @@ from gi.repository import Gst, GObject, GstRtspServer, GLib
18
20
  Gst.init(None)
19
21
 
20
22
  from sciveo.tools.logger import *
23
+ from sciveo.tools.daemon import DaemonBase
21
24
  from sciveo.tools.timers import FPSCounter
22
25
  from sciveo.media.capture.draw import *
23
26
  from sciveo.media.capture.cam import CameraDaemon
@@ -145,19 +148,60 @@ class CamFactory(ColorBarFactory):
145
148
  else:
146
149
  self.cam = CameraDaemon(cam_id=self.cam_id)
147
150
 
151
+ def read_cam_frame(self):
152
+ try:
153
+ frame = self.cam.read()
154
+ except Exception as e:
155
+ exception(e, "CAM frame read FAIL")
156
+ frame = None
157
+ return frame
158
+
148
159
  def next_frame(self):
149
- frame = self.cam.read()
160
+ frame = self.read_cam_frame()
161
+
150
162
  if frame is None:
151
163
  frame = super().next_frame()
152
164
 
153
- for k, v in self.configuration.get("draw", {}).items():
154
- self.list_draw_processors.get(k, DrawNone())(frame, v)
165
+ try:
166
+ for k, v in self.configuration.get("draw", {}).items():
167
+ self.list_draw_processors.get(k, DrawNone())(frame, v)
168
+ except Exception as e:
169
+ exception(e, "DRAW FAIL")
155
170
 
156
171
  self.fps_next_frame.update()
157
172
 
158
173
  return frame
159
174
 
160
175
 
176
+ class CamDisplayDaemon(DaemonBase):
177
+ def __init__(self, cam_factory, host="0.0.0.0", port=8554, stream="test", display=0):
178
+ super().__init__()
179
+ self.cam_factory = cam_factory
180
+ self.host = host
181
+ self.port = port
182
+ self.stream = stream
183
+ self.display = display
184
+ self.fps_display = FPSCounter(period=10, tag=f"display", round_value=1)
185
+
186
+ def loop(self):
187
+ self.cam_factory.serve(host=self.host, port=self.port, stream=self.stream)
188
+
189
+ def display(self):
190
+ while(True):
191
+ frame = self.cam_factory.read_cam_frame()
192
+ if frame is None:
193
+ time.sleep(0.1)
194
+ continue
195
+
196
+ if self.display == 0:
197
+ cv2.imshow(f"cam {self.cam_factory.cam_id} {frame.shape}", frame)
198
+ if cv2.waitKey(1) & 0xFF == ord('q'):
199
+ break
200
+
201
+ self.fps_display.update()
202
+
203
+
204
+
161
205
  if __name__ == "__main__":
162
206
 
163
207
  # server = ColorBarFactory(640, 480, 10)
@@ -46,10 +46,13 @@ class RPICamera(CameraDaemon):
46
46
  self.picam2.stop()
47
47
 
48
48
  def read_frame(self):
49
- frame = self.picam2.capture_array()
50
- cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
51
- with self.lock_frame:
52
- self.frame = frame
49
+ try:
50
+ frame = self.picam2.capture_array()
51
+ cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
52
+ with self.lock_frame:
53
+ self.frame = frame
54
+ except Exception as e:
55
+ exception(e, "CAM frame read FAIL")
53
56
 
54
57
 
55
58
  class RPICameraFactory(CamFactory):
@@ -105,7 +105,6 @@ class EvalObjectDetection:
105
105
  count_labels = 0
106
106
  true_positives = []
107
107
  false_positives = []
108
- detected = []
109
108
 
110
109
  for i, prediction in enumerate(self.converted_predictions):
111
110
  current_predictions = prediction.get(class_name, [])
@@ -113,6 +112,8 @@ class EvalObjectDetection:
113
112
 
114
113
  count_labels += len(current_labels)
115
114
 
115
+ detected = set()
116
+
116
117
  for prediction_box in current_predictions:
117
118
  if prediction_box[4] < confidence_threshold:
118
119
  continue
@@ -126,10 +127,12 @@ class EvalObjectDetection:
126
127
  max_iou = iou
127
128
  gt_match = label_box
128
129
 
129
- if gt_match is not None and gt_match not in detected:
130
+ gt_match_key = tuple([round(x, 6) for x in gt_match]) if gt_match is not None else None
131
+
132
+ if gt_match is not None and gt_match_key not in detected:
130
133
  true_positives.append(1)
131
134
  false_positives.append(0)
132
- detected.append(gt_match)
135
+ detected.add(gt_match_key)
133
136
  else:
134
137
  true_positives.append(0)
135
138
  false_positives.append(1)
@@ -143,7 +146,8 @@ class EvalObjectDetection:
143
146
  FP = np.sum(false_positives) / (count_labels + 1e-20)
144
147
 
145
148
  # Compute AP using the trapezoidal rule (integrating precision over recall)
146
- ap = np.trapz(precision, recall)
149
+ order = np.argsort(recall)
150
+ ap = np.trapezoid(precision[order], recall[order])
147
151
  return ap, FP
148
152
 
149
153
  # TODO: Use simple gradient-based threshold optimisation instead of current grid search.
@@ -199,13 +203,15 @@ class EvalObjectDetection:
199
203
 
200
204
  def evaluate(self, confidence_thresholds={"default": 0.0}):
201
205
  """
202
- Calculate metrics like mAP based on IoU.
206
+ Non-classical AP-related FP-constrained AP@IoU=0.5 calculation
203
207
  """
204
208
 
205
209
  aps = []
206
210
  class_ap = {}
207
211
  class_FP = {}
208
212
 
213
+ info("Evaluating non-classical FP-constrained AP@IoU=0.5")
214
+
209
215
  for class_name in self.class_names:
210
216
  ap, FP = self.compute_ap(class_name, confidence_thresholds.get(class_name, confidence_thresholds["default"]))
211
217
  aps.append(ap)
@@ -0,0 +1,2 @@
1
+
2
+ __version__ = '0.1.85'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sciveo
3
- Version: 0.1.83
3
+ Version: 0.1.85
4
4
  Description-Content-Type: text/markdown
5
5
  Provides-Extra: mon
6
6
  Provides-Extra: net
@@ -1,2 +0,0 @@
1
-
2
- __version__ = '0.1.83'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes