sciveo 0.1.79__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.79 → sciveo-0.1.80}/PKG-INFO +1 -1
  2. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/cli.py +2 -2
  3. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/cam.py +14 -8
  4. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/draw.py +8 -4
  5. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/gst_server.py +14 -5
  6. sciveo-0.1.80/sciveo/media/capture/rpi.py +55 -0
  7. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/configuration.py +6 -4
  8. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/daemon.py +2 -2
  9. sciveo-0.1.80/sciveo/version.py +2 -0
  10. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo.egg-info/PKG-INFO +1 -1
  11. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo.egg-info/SOURCES.txt +1 -0
  12. sciveo-0.1.79/sciveo/version.py +0 -2
  13. {sciveo-0.1.79 → sciveo-0.1.80}/README.md +0 -0
  14. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/__init__.py +0 -0
  15. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/api/__init__.py +0 -0
  16. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/api/base.py +0 -0
  17. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/api/predictors.py +0 -0
  18. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/api/server.py +0 -0
  19. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/api/upload.py +0 -0
  20. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/common/__init__.py +0 -0
  21. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/common/configuration.py +0 -0
  22. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/common/model.py +0 -0
  23. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/common/optimizers.py +0 -0
  24. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/common/sampling.py +0 -0
  25. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/content/__init__.py +0 -0
  26. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/content/dataset.py +0 -0
  27. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/content/experiment.py +0 -0
  28. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/content/project.py +0 -0
  29. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/content/runner.py +0 -0
  30. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/db/__init__.py +0 -0
  31. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/db/read_table.py +0 -0
  32. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/__init__.py +0 -0
  33. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/__init__.py +0 -0
  34. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/__init__.py +0 -0
  35. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/__init__.py +0 -0
  36. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/asteroid.py +0 -0
  37. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/base_move.py +0 -0
  38. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/circle.py +0 -0
  39. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/game.py +0 -0
  40. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/geometrics.py +0 -0
  41. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/gravity_ball.py +0 -0
  42. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/laser.py +0 -0
  43. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/rocket.py +0 -0
  44. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/space_asteroids.py +0 -0
  45. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/games/asteroids/volume_bar.py +0 -0
  46. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/motion_detection.py +0 -0
  47. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/nvr.py +0 -0
  48. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/readers.py +0 -0
  49. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/capture/rtsp.py +0 -0
  50. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/__init__.py +0 -0
  51. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/base.py +0 -0
  52. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/encoders/__init__.py +0 -0
  53. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/encoders/base.py +0 -0
  54. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/encoders/normalizer.py +0 -0
  55. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/nlp/__init__.py +0 -0
  56. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/nlp/search.py +0 -0
  57. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/time_series/__init__.py +0 -0
  58. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/time_series/dataset.py +0 -0
  59. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/time_series/predictor.py +0 -0
  60. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/time_series/trainer.py +0 -0
  61. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/ml/time_series/window_generator.py +0 -0
  62. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/__init__.py +0 -0
  63. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/base.py +0 -0
  64. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/job_daemon.py +0 -0
  65. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/layouts/__init__.py +0 -0
  66. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/layouts/base.py +0 -0
  67. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/pipeline.py +0 -0
  68. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/postprocessors/__init__.py +0 -0
  69. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/postprocessors/base.py +0 -0
  70. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/postprocessors/default.py +0 -0
  71. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/__init__.py +0 -0
  72. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/audio/__init__.py +0 -0
  73. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/audio/audio.py +0 -0
  74. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/audio/audio_extractor_process.py +0 -0
  75. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/aws.py +0 -0
  76. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/base.py +0 -0
  77. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/file/__init__.py +0 -0
  78. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/file/archive.py +0 -0
  79. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/__init__.py +0 -0
  80. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/album.py +0 -0
  81. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/album_in_image.py +0 -0
  82. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/depth_esimation.py +0 -0
  83. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/embeddings.py +0 -0
  84. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/filters.py +0 -0
  85. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/generators.py +0 -0
  86. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/histogram.py +0 -0
  87. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/mask.py +0 -0
  88. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/object_detection.py +0 -0
  89. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/resize.py +0 -0
  90. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/segmentation.py +0 -0
  91. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/image/watermark.py +0 -0
  92. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/media_info.py +0 -0
  93. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/nlp/__init__.py +0 -0
  94. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/nlp/address.py +0 -0
  95. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/qr.py +0 -0
  96. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/__init__.py +0 -0
  97. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/base.py +0 -0
  98. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/dataset.py +0 -0
  99. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/time_series/__init__.py +0 -0
  100. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/time_series/predictor.py +0 -0
  101. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/sci/time_series/trainer.py +0 -0
  102. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/tpu_base.py +0 -0
  103. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/__init__.py +0 -0
  104. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/generators.py +0 -0
  105. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/motion_detection.py +0 -0
  106. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/resize.py +0 -0
  107. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/video_album.py +0 -0
  108. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/video_frames.py +0 -0
  109. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/processors/video/video_resample.py +0 -0
  110. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/queues.py +0 -0
  111. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/server.py +0 -0
  112. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/web/__init__.py +0 -0
  113. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/pipelines/web/server.py +0 -0
  114. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/tools/__init__.py +0 -0
  115. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/media/tools/video_interactive.py +0 -0
  116. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/__init__.py +0 -0
  117. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/base.py +0 -0
  118. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/dataset/__init__.py +0 -0
  119. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/dataset/object_detection.py +0 -0
  120. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/evaluation/__init__.py +0 -0
  121. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/evaluation/markdown.py +0 -0
  122. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/evaluation/object_detection.py +0 -0
  123. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/images/__init__.py +0 -0
  124. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/images/base.py +0 -0
  125. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/images/description.py +0 -0
  126. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/images/embeddings.py +0 -0
  127. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/images/object_detection.py +0 -0
  128. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/images/tools.py +0 -0
  129. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/images/transformers.py +0 -0
  130. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/nlp/__init__.py +0 -0
  131. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/nlp/embeddings.py +0 -0
  132. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/nlp/tokenizers/__init__.py +0 -0
  133. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/nlp/tokenizers/bpe.py +0 -0
  134. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/video/__init__.py +0 -0
  135. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/ml/video/description.py +0 -0
  136. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/__init__.py +0 -0
  137. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/monitor.py +0 -0
  138. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/power/__init__.py +0 -0
  139. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/power/ems300.py +0 -0
  140. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/power/sim.py +0 -0
  141. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/power/tools.py +0 -0
  142. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/start.py +0 -0
  143. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/watchdog/__init__.py +0 -0
  144. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/watchdog/base.py +0 -0
  145. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/monitoring/watchdog/process.py +0 -0
  146. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/network/__init__.py +0 -0
  147. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/network/camera.py +0 -0
  148. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/network/sniffer.py +0 -0
  149. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/network/tools.py +0 -0
  150. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/__init__.py +0 -0
  151. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/array.py +0 -0
  152. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/aws/__init__.py +0 -0
  153. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/aws/priority_queue.py +0 -0
  154. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/aws/s3.py +0 -0
  155. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/common.py +0 -0
  156. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/complexity.py +0 -0
  157. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/compress.py +0 -0
  158. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/crypto.py +0 -0
  159. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/draw/__init__.py +0 -0
  160. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/draw/contours.py +0 -0
  161. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/formating.py +0 -0
  162. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/hardware.py +0 -0
  163. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/http.py +0 -0
  164. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/logger.py +0 -0
  165. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/os.py +0 -0
  166. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/queue.py +0 -0
  167. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/random.py +0 -0
  168. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/remote.py +0 -0
  169. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/simple_counter.py +0 -0
  170. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/synchronized.py +0 -0
  171. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/timers.py +0 -0
  172. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/tools/totp.py +0 -0
  173. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/web/__init__.py +0 -0
  174. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo/web/common.py +0 -0
  175. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo.egg-info/dependency_links.txt +0 -0
  176. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo.egg-info/entry_points.txt +0 -0
  177. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo.egg-info/requires.txt +0 -0
  178. {sciveo-0.1.79 → sciveo-0.1.80}/sciveo.egg-info/top_level.txt +0 -0
  179. {sciveo-0.1.79 → sciveo-0.1.80}/setup.cfg +0 -0
  180. {sciveo-0.1.79 → sciveo-0.1.80}/setup.py +0 -0
  181. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_complexity.py +0 -0
  182. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_compress.py +0 -0
  183. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_configuration.py +0 -0
  184. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_crypto.py +0 -0
  185. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_eval_markdown.py +0 -0
  186. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_ml_datasets.py +0 -0
  187. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_monitoring.py +0 -0
  188. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_runner.py +0 -0
  189. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_sampling.py +0 -0
  190. {sciveo-0.1.79 → sciveo-0.1.80}/test/test_tokenizers.py +0 -0
  191. {sciveo-0.1.79 → 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.79
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
 
@@ -118,22 +118,31 @@ class ColorBarFactory(RTSPFactoryBase):
118
118
 
119
119
 
120
120
  class CamFactory(ColorBarFactory):
121
- def __init__(self, cam_id, width, height, fps, list_draw={}):
121
+ def __init__(self, cam_id, width, height, fps, configuration={}):
122
122
  super().__init__(width, height, fps, appsrc_name=f"cam{cam_id}")
123
- self.cam = CameraDaemon(cam_id=cam_id)
124
- self.cam.start()
125
- self.list_draw = list_draw
123
+ self.cam_id = cam_id
124
+ self.configuration = configuration
126
125
  self.list_draw_processors = {
127
126
  "none": DrawNone(),
128
127
  "dt": DrawDateTime(),
129
128
  }
130
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
+
131
140
  def next_frame(self):
132
141
  frame = self.cam.read()
133
142
  if frame is None:
134
143
  frame = super().next_frame()
135
144
 
136
- for k, v in self.list_draw.items():
145
+ for k, v in self.configuration.get("draw", {}).items():
137
146
  self.list_draw_processors.get(k, DrawNone())(frame, v)
138
147
 
139
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.79
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.79'
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