sciveo 0.1.78__tar.gz → 0.1.80__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.78 → sciveo-0.1.80}/PKG-INFO +1 -1
  2. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/cli.py +2 -2
  3. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/cam.py +14 -8
  4. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/draw.py +8 -4
  5. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/gst_server.py +21 -11
  6. sciveo-0.1.80/sciveo/media/capture/rpi.py +55 -0
  7. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/configuration.py +6 -4
  8. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/daemon.py +2 -2
  9. sciveo-0.1.80/sciveo/version.py +2 -0
  10. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo.egg-info/PKG-INFO +1 -1
  11. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo.egg-info/SOURCES.txt +1 -0
  12. sciveo-0.1.78/sciveo/version.py +0 -2
  13. {sciveo-0.1.78 → sciveo-0.1.80}/README.md +0 -0
  14. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/__init__.py +0 -0
  15. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/api/__init__.py +0 -0
  16. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/api/base.py +0 -0
  17. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/api/predictors.py +0 -0
  18. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/api/server.py +0 -0
  19. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/api/upload.py +0 -0
  20. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/common/__init__.py +0 -0
  21. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/common/configuration.py +0 -0
  22. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/common/model.py +0 -0
  23. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/common/optimizers.py +0 -0
  24. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/common/sampling.py +0 -0
  25. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/content/__init__.py +0 -0
  26. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/content/dataset.py +0 -0
  27. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/content/experiment.py +0 -0
  28. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/content/project.py +0 -0
  29. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/content/runner.py +0 -0
  30. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/db/__init__.py +0 -0
  31. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/db/read_table.py +0 -0
  32. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/__init__.py +0 -0
  33. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/__init__.py +0 -0
  34. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/__init__.py +0 -0
  35. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/__init__.py +0 -0
  36. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/asteroid.py +0 -0
  37. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/base_move.py +0 -0
  38. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/circle.py +0 -0
  39. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/game.py +0 -0
  40. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/geometrics.py +0 -0
  41. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/gravity_ball.py +0 -0
  42. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/laser.py +0 -0
  43. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/rocket.py +0 -0
  44. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/space_asteroids.py +0 -0
  45. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/volume_bar.py +0 -0
  46. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/motion_detection.py +0 -0
  47. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/nvr.py +0 -0
  48. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/readers.py +0 -0
  49. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/capture/rtsp.py +0 -0
  50. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/__init__.py +0 -0
  51. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/base.py +0 -0
  52. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/encoders/__init__.py +0 -0
  53. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/encoders/base.py +0 -0
  54. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/encoders/normalizer.py +0 -0
  55. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/nlp/__init__.py +0 -0
  56. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/nlp/search.py +0 -0
  57. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/time_series/__init__.py +0 -0
  58. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/time_series/dataset.py +0 -0
  59. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/time_series/predictor.py +0 -0
  60. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/time_series/trainer.py +0 -0
  61. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/ml/time_series/window_generator.py +0 -0
  62. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/__init__.py +0 -0
  63. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/base.py +0 -0
  64. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/job_daemon.py +0 -0
  65. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/layouts/__init__.py +0 -0
  66. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/layouts/base.py +0 -0
  67. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/pipeline.py +0 -0
  68. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/postprocessors/__init__.py +0 -0
  69. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/postprocessors/base.py +0 -0
  70. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/postprocessors/default.py +0 -0
  71. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/__init__.py +0 -0
  72. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/audio/__init__.py +0 -0
  73. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/audio/audio.py +0 -0
  74. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/audio/audio_extractor_process.py +0 -0
  75. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/aws.py +0 -0
  76. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/base.py +0 -0
  77. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/file/__init__.py +0 -0
  78. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/file/archive.py +0 -0
  79. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/__init__.py +0 -0
  80. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/album.py +0 -0
  81. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/album_in_image.py +0 -0
  82. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/depth_esimation.py +0 -0
  83. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/embeddings.py +0 -0
  84. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/filters.py +0 -0
  85. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/generators.py +0 -0
  86. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/histogram.py +0 -0
  87. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/mask.py +0 -0
  88. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/object_detection.py +0 -0
  89. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/resize.py +0 -0
  90. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/segmentation.py +0 -0
  91. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/watermark.py +0 -0
  92. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/media_info.py +0 -0
  93. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/nlp/__init__.py +0 -0
  94. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/nlp/address.py +0 -0
  95. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/qr.py +0 -0
  96. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/__init__.py +0 -0
  97. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/base.py +0 -0
  98. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/dataset.py +0 -0
  99. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/time_series/__init__.py +0 -0
  100. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/time_series/predictor.py +0 -0
  101. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/time_series/trainer.py +0 -0
  102. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/tpu_base.py +0 -0
  103. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/__init__.py +0 -0
  104. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/generators.py +0 -0
  105. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/motion_detection.py +0 -0
  106. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/resize.py +0 -0
  107. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/video_album.py +0 -0
  108. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/video_frames.py +0 -0
  109. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/video_resample.py +0 -0
  110. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/queues.py +0 -0
  111. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/server.py +0 -0
  112. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/web/__init__.py +0 -0
  113. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/pipelines/web/server.py +0 -0
  114. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/tools/__init__.py +0 -0
  115. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/media/tools/video_interactive.py +0 -0
  116. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/__init__.py +0 -0
  117. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/base.py +0 -0
  118. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/dataset/__init__.py +0 -0
  119. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/dataset/object_detection.py +0 -0
  120. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/evaluation/__init__.py +0 -0
  121. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/evaluation/markdown.py +0 -0
  122. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/evaluation/object_detection.py +0 -0
  123. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/images/__init__.py +0 -0
  124. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/images/base.py +0 -0
  125. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/images/description.py +0 -0
  126. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/images/embeddings.py +0 -0
  127. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/images/object_detection.py +0 -0
  128. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/images/tools.py +0 -0
  129. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/images/transformers.py +0 -0
  130. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/nlp/__init__.py +0 -0
  131. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/nlp/embeddings.py +0 -0
  132. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/nlp/tokenizers/__init__.py +0 -0
  133. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/nlp/tokenizers/bpe.py +0 -0
  134. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/video/__init__.py +0 -0
  135. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/ml/video/description.py +0 -0
  136. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/__init__.py +0 -0
  137. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/monitor.py +0 -0
  138. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/power/__init__.py +0 -0
  139. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/power/ems300.py +0 -0
  140. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/power/sim.py +0 -0
  141. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/power/tools.py +0 -0
  142. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/start.py +0 -0
  143. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/watchdog/__init__.py +0 -0
  144. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/watchdog/base.py +0 -0
  145. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/monitoring/watchdog/process.py +0 -0
  146. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/network/__init__.py +0 -0
  147. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/network/camera.py +0 -0
  148. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/network/sniffer.py +0 -0
  149. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/network/tools.py +0 -0
  150. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/__init__.py +0 -0
  151. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/array.py +0 -0
  152. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/aws/__init__.py +0 -0
  153. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/aws/priority_queue.py +0 -0
  154. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/aws/s3.py +0 -0
  155. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/common.py +0 -0
  156. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/complexity.py +0 -0
  157. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/compress.py +0 -0
  158. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/crypto.py +0 -0
  159. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/draw/__init__.py +0 -0
  160. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/draw/contours.py +0 -0
  161. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/formating.py +0 -0
  162. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/hardware.py +0 -0
  163. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/http.py +0 -0
  164. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/logger.py +0 -0
  165. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/os.py +0 -0
  166. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/queue.py +0 -0
  167. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/random.py +0 -0
  168. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/remote.py +0 -0
  169. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/simple_counter.py +0 -0
  170. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/synchronized.py +0 -0
  171. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/timers.py +0 -0
  172. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/tools/totp.py +0 -0
  173. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/web/__init__.py +0 -0
  174. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo/web/common.py +0 -0
  175. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo.egg-info/dependency_links.txt +0 -0
  176. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo.egg-info/entry_points.txt +0 -0
  177. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo.egg-info/requires.txt +0 -0
  178. {sciveo-0.1.78 → sciveo-0.1.80}/sciveo.egg-info/top_level.txt +0 -0
  179. {sciveo-0.1.78 → sciveo-0.1.80}/setup.cfg +0 -0
  180. {sciveo-0.1.78 → sciveo-0.1.80}/setup.py +0 -0
  181. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_complexity.py +0 -0
  182. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_compress.py +0 -0
  183. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_configuration.py +0 -0
  184. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_crypto.py +0 -0
  185. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_eval_markdown.py +0 -0
  186. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_ml_datasets.py +0 -0
  187. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_monitoring.py +0 -0
  188. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_runner.py +0 -0
  189. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_sampling.py +0 -0
  190. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_tokenizers.py +0 -0
  191. {sciveo-0.1.78 → sciveo-0.1.80}/test/test_totp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sciveo
3
- Version: 0.1.78
3
+ Version: 0.1.80
4
4
  Description-Content-Type: text/markdown
5
5
  Provides-Extra: mon
6
6
  Provides-Extra: net
@@ -116,13 +116,13 @@ def main():
116
116
  from sciveo.media.capture.gst_server import CamFactory, ColorBarFactory
117
117
  data = json.loads(args.data_json)
118
118
  if args.src_id is not None:
119
- server = CamFactory(args.src_id, args.width, args.height, args.fps, list_draw=data)
119
+ server = CamFactory(args.src_id, args.width, args.height, args.fps, configuration=data)
120
120
  elif args.src is not None:
121
121
  if "color" in args.src:
122
122
  server = ColorBarFactory(args.width, args.height, args.fps)
123
123
  else:
124
124
  # warning("RTSP src", args.src, "not recognised")
125
- server = CamFactory(args.src, args.width, args.height, args.fps, list_draw=data)
125
+ server = CamFactory(args.src, args.width, args.height, args.fps, configuration=data)
126
126
  server.serve(host=args.host, port=args.port, stream=args.stream)
127
127
  elif args.command == 'media-server':
128
128
  from sciveo.media.pipelines.server import __START_SCIVEO_MEDIA_SERVER__
@@ -46,23 +46,27 @@ class CaptureBase(DaemonBase):
46
46
  pass
47
47
 
48
48
  def loop(self):
49
- with self.lock_frame:
50
- self.read_frame()
51
- self.fps.update()
49
+ self.read_frame()
50
+ self.fps.update()
52
51
 
53
52
 
54
53
  class CameraDaemon(CaptureBase):
55
54
  def __init__(self, cam_id=0, period=0):
56
55
  super().__init__(src=cam_id, tag="cam", period=period)
57
- self.cap = cv2.VideoCapture(cam_id)
58
- debug(cam_id, "warming...")
56
+ self.init_cam()
57
+
58
+ def init_cam(self):
59
+ self.cap = cv2.VideoCapture(self.src)
60
+ debug(self.src, "warming...")
59
61
  time.sleep(1)
60
62
 
61
63
  def close(self):
62
64
  self.cap.release()
63
65
 
64
66
  def read_frame(self):
65
- ret, self.frame = self.cap.read()
67
+ ret, frame = self.cap.read()
68
+ with self.lock_frame:
69
+ self.frame = frame
66
70
 
67
71
 
68
72
  class PredictorCameraDaemon(DaemonBase):
@@ -142,8 +146,10 @@ class ScreenDaemon(CaptureBase):
142
146
 
143
147
  def read_frame(self):
144
148
  sct_img = self.sct.grab(self.monitor)
145
- self.frame = np.array(sct_img)
146
- self.frame = cv2.cvtColor(self.frame, cv2.COLOR_BGRA2BGR)
149
+ frame = np.array(sct_img)
150
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGRA2BGR)
151
+ with self.lock_frame:
152
+ self.frame = frame
147
153
 
148
154
 
149
155
  if __name__ == '__main__':
@@ -16,7 +16,7 @@ from sciveo.tools.logger import *
16
16
 
17
17
 
18
18
  class DrawNone:
19
- def __call__(self, frame, tag):
19
+ def __call__(self, frame, configuration):
20
20
  return frame
21
21
 
22
22
  class DrawDateTime:
@@ -34,7 +34,7 @@ class DrawDateTime:
34
34
  self.font = font
35
35
  self.font_scale_factor = font_scale_factor
36
36
 
37
- def __call__(self, frame, tag):
37
+ def __call__(self, frame, configuration):
38
38
  """
39
39
  Draws date/time (or custom text) on the frame.
40
40
 
@@ -45,9 +45,13 @@ class DrawDateTime:
45
45
  if frame is None or len(frame.shape) < 2:
46
46
  return frame # invalid frame
47
47
 
48
+ tag = configuration.get("tag", "")
49
+
48
50
  h, w = frame.shape[:2]
49
51
 
50
- font_scale = max(0.2, h * self.font_scale_factor)
52
+ font_scale = configuration.get("font_scale", max(0.2, h * self.font_scale_factor))
53
+ color = configuration.get("color", self.color)
54
+ thickness = configuration.get("thickness", self.thickness)
51
55
 
52
56
  date_text = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
53
57
  draw_text = f"{tag} {date_text}"
@@ -56,7 +60,7 @@ class DrawDateTime:
56
60
  x = min(max(self.position[0], 0), w - 1)
57
61
  y = min(max(self.position[1] + int(font_scale * 20), int(font_scale * 20)), h - 1)
58
62
 
59
- cv2.putText(frame, draw_text, (x, y), self.font, font_scale, self.color, self.thickness, cv2.LINE_AA)
63
+ cv2.putText(frame, draw_text, (x, y), self.font, font_scale, color, thickness, cv2.LINE_AA)
60
64
  return frame
61
65
 
62
66
 
@@ -23,16 +23,17 @@ from sciveo.media.capture.cam import CameraDaemon
23
23
 
24
24
 
25
25
  class RTSPFactoryBase(GstRtspServer.RTSPMediaFactory):
26
- def __init__(self, width, height, fps):
26
+ def __init__(self, width, height, fps, appsrc_name="rtspvideo"):
27
27
  super().__init__()
28
28
  self.width = width
29
29
  self.height = height
30
30
  self.fps = fps
31
+ self.appsrc_name = appsrc_name
31
32
  self.set_shared(True)
32
33
 
33
34
  def do_create_element(self, url):
34
35
  pipeline_str = (
35
- f"appsrc name=mysrc is-live=true block=true format=time "
36
+ f"appsrc name={self.appsrc_name} is-live=true block=true format=time "
36
37
  f"caps=video/x-raw,format=BGR,width={self.width},height={self.height},framerate={self.fps}/1 "
37
38
  "! videoconvert "
38
39
  "! x264enc tune=zerolatency speed-preset=ultrafast "
@@ -41,7 +42,7 @@ class RTSPFactoryBase(GstRtspServer.RTSPMediaFactory):
41
42
  return Gst.parse_launch(pipeline_str)
42
43
 
43
44
  def do_configure(self, rtsp_media):
44
- self.appsrc = rtsp_media.get_element().get_child_by_name("mysrc")
45
+ self.appsrc = rtsp_media.get_element().get_child_by_name(self.appsrc_name)
45
46
  self.appsrc.connect("need-data", self.on_need_data)
46
47
  self.timestamp = 0
47
48
 
@@ -108,8 +109,8 @@ class ColorBarsGenerator:
108
109
 
109
110
 
110
111
  class ColorBarFactory(RTSPFactoryBase):
111
- def __init__(self, width, height, fps):
112
- super().__init__(width, height, fps)
112
+ def __init__(self, width, height, fps, appsrc_name="colorbar"):
113
+ super().__init__(width, height, fps, appsrc_name=appsrc_name)
113
114
  self.gen = ColorBarsGenerator(width=width, height=height)
114
115
 
115
116
  def next_frame(self):
@@ -117,22 +118,31 @@ class ColorBarFactory(RTSPFactoryBase):
117
118
 
118
119
 
119
120
  class CamFactory(ColorBarFactory):
120
- def __init__(self, cam_id, width, height, fps, list_draw={}):
121
- super().__init__(width, height, fps)
122
- self.cam = CameraDaemon(cam_id=cam_id)
123
- self.cam.start()
124
- self.list_draw = list_draw
121
+ def __init__(self, cam_id, width, height, fps, configuration={}):
122
+ super().__init__(width, height, fps, appsrc_name=f"cam{cam_id}")
123
+ self.cam_id = cam_id
124
+ self.configuration = configuration
125
125
  self.list_draw_processors = {
126
126
  "none": DrawNone(),
127
127
  "dt": DrawDateTime(),
128
128
  }
129
129
 
130
+ self.init_cam()
131
+ self.cam.start()
132
+
133
+ def init_cam(self):
134
+ if "RPI" in self.configuration:
135
+ from sciveo.media.capture.rpi import RPICamera
136
+ self.cam = RPICamera(cam_id=self.cam_id, width=self.width, height=self.height)
137
+ else:
138
+ self.cam = CameraDaemon(cam_id=self.cam_id)
139
+
130
140
  def next_frame(self):
131
141
  frame = self.cam.read()
132
142
  if frame is None:
133
143
  frame = super().next_frame()
134
144
 
135
- for k, v in self.list_draw.items():
145
+ for k, v in self.configuration.get("draw", {}).items():
136
146
  self.list_draw_processors.get(k, DrawNone())(frame, v)
137
147
 
138
148
  return frame
@@ -0,0 +1,55 @@
1
+ #
2
+ # Pavlin Georgiev, Softel Labs
3
+ #
4
+ # This is a proprietary file and may not be copied,
5
+ # distributed, or modified without express permission
6
+ # from the owner. For licensing inquiries, please
7
+ # contact pavlin@softel.bg.
8
+ #
9
+ # 2024
10
+ #
11
+
12
+ import time
13
+ import numpy as np
14
+ import cv2
15
+ from picamera2 import Picamera2
16
+
17
+ from sciveo.tools.logger import *
18
+ from sciveo.media.capture.cam import CameraDaemon
19
+ from sciveo.media.capture.gst_server import CamFactory
20
+
21
+
22
+ class RPICamera(CameraDaemon):
23
+ def __init__(self, cam_id=0, width=640, height=480, period=0):
24
+ super().__init__(cam_id=cam_id, period=period)
25
+ self.width = width
26
+ self.height = height
27
+
28
+ def init_cam(self):
29
+ self.picam2 = Picamera2()
30
+ config = self.picam2.create_video_configuration(
31
+ main={
32
+ "size": (self.width, self.height),
33
+ "format": "RGB888"
34
+ },
35
+ buffer_count=4
36
+ )
37
+ self.picam2.configure(config)
38
+ self.picam2.start()
39
+
40
+ debug(self.src, "warming...")
41
+ time.sleep(1)
42
+
43
+ def close(self):
44
+ self.picam2.stop()
45
+
46
+ def read_frame(self):
47
+ frame = self.picam2.capture_array()
48
+ cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
49
+ with self.lock_frame:
50
+ self.frame = frame
51
+
52
+
53
+ class RPICameraFactory(CamFactory):
54
+ def init_cam(self):
55
+ self.cam = RPICamera(cam_id=self.cam_id, width=self.width, height=self.height)
@@ -13,6 +13,8 @@ import os
13
13
  import json
14
14
  import threading
15
15
 
16
+ from sciveo.tools.logger import *
17
+
16
18
 
17
19
  class GlobalConfiguration:
18
20
  config = None
@@ -20,8 +22,8 @@ class GlobalConfiguration:
20
22
 
21
23
  def __init__(self, name) -> None:
22
24
  home = os.path.expanduser('~')
23
- self.name = name
24
- self.base_path = os.path.join(home, f'.{name}')
25
+ self.name = name.lower()
26
+ self.base_path = os.path.join(home, f'.{self.name}')
25
27
  self.data = {}
26
28
 
27
29
  self.default = {
@@ -33,7 +35,7 @@ class GlobalConfiguration:
33
35
  self.read_local_files()
34
36
  self.read_environment()
35
37
  except Exception as e:
36
- error("Exception", e)
38
+ exception(e)
37
39
 
38
40
  @staticmethod
39
41
  def get(name='sciveo', reload=False):
@@ -52,7 +54,7 @@ class GlobalConfiguration:
52
54
  return self.data.get(key, self.default.get(key, None))
53
55
 
54
56
  def save_kv(self, key, value):
55
- key = key.strip().lower().replace("sciveo_", "")
57
+ key = key.strip().lower().replace(f"{self.name}_", "")
56
58
  value = value.strip()
57
59
  self.data[key] = value
58
60
 
@@ -73,14 +73,14 @@ class DaemonBase:
73
73
  try:
74
74
  self.loop()
75
75
  except Exception as e:
76
- error(e)
76
+ exception(e)
77
77
  time.sleep(self.period)
78
78
 
79
79
  def safe_run(self):
80
80
  try:
81
81
  self.run()
82
82
  except Exception as e:
83
- error(e)
83
+ exception(e)
84
84
 
85
85
 
86
86
  class TasksDaemon(DaemonBase):
@@ -0,0 +1,2 @@
1
+
2
+ __version__ = '0.1.80'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sciveo
3
- Version: 0.1.78
3
+ Version: 0.1.80
4
4
  Description-Content-Type: text/markdown
5
5
  Provides-Extra: mon
6
6
  Provides-Extra: net
@@ -34,6 +34,7 @@ sciveo/media/capture/gst_server.py
34
34
  sciveo/media/capture/motion_detection.py
35
35
  sciveo/media/capture/nvr.py
36
36
  sciveo/media/capture/readers.py
37
+ sciveo/media/capture/rpi.py
37
38
  sciveo/media/capture/rtsp.py
38
39
  sciveo/media/capture/games/__init__.py
39
40
  sciveo/media/capture/games/asteroids/__init__.py
@@ -1,2 +0,0 @@
1
-
2
- __version__ = '0.1.78'
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