sciveo 0.1.76__tar.gz → 0.1.77__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 (190) hide show
  1. {sciveo-0.1.76 → sciveo-0.1.77}/PKG-INFO +1 -1
  2. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/cli.py +11 -3
  3. sciveo-0.1.77/sciveo/media/capture/draw.py +81 -0
  4. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/gst_server.py +12 -2
  5. sciveo-0.1.77/sciveo/version.py +2 -0
  6. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo.egg-info/PKG-INFO +1 -1
  7. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo.egg-info/SOURCES.txt +1 -0
  8. sciveo-0.1.76/sciveo/version.py +0 -2
  9. {sciveo-0.1.76 → sciveo-0.1.77}/README.md +0 -0
  10. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/__init__.py +0 -0
  11. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/api/__init__.py +0 -0
  12. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/api/base.py +0 -0
  13. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/api/predictors.py +0 -0
  14. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/api/server.py +0 -0
  15. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/api/upload.py +0 -0
  16. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/common/__init__.py +0 -0
  17. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/common/configuration.py +0 -0
  18. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/common/model.py +0 -0
  19. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/common/optimizers.py +0 -0
  20. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/common/sampling.py +0 -0
  21. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/content/__init__.py +0 -0
  22. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/content/dataset.py +0 -0
  23. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/content/experiment.py +0 -0
  24. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/content/project.py +0 -0
  25. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/content/runner.py +0 -0
  26. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/db/__init__.py +0 -0
  27. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/db/read_table.py +0 -0
  28. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/__init__.py +0 -0
  29. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/__init__.py +0 -0
  30. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/cam.py +0 -0
  31. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/__init__.py +0 -0
  32. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/__init__.py +0 -0
  33. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/asteroid.py +0 -0
  34. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/base_move.py +0 -0
  35. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/circle.py +0 -0
  36. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/game.py +0 -0
  37. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/geometrics.py +0 -0
  38. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/gravity_ball.py +0 -0
  39. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/laser.py +0 -0
  40. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/rocket.py +0 -0
  41. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/space_asteroids.py +0 -0
  42. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/games/asteroids/volume_bar.py +0 -0
  43. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/motion_detection.py +0 -0
  44. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/nvr.py +0 -0
  45. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/readers.py +0 -0
  46. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/capture/rtsp.py +0 -0
  47. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/__init__.py +0 -0
  48. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/base.py +0 -0
  49. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/encoders/__init__.py +0 -0
  50. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/encoders/base.py +0 -0
  51. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/encoders/normalizer.py +0 -0
  52. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/nlp/__init__.py +0 -0
  53. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/nlp/search.py +0 -0
  54. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/time_series/__init__.py +0 -0
  55. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/time_series/dataset.py +0 -0
  56. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/time_series/predictor.py +0 -0
  57. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/time_series/trainer.py +0 -0
  58. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/ml/time_series/window_generator.py +0 -0
  59. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/__init__.py +0 -0
  60. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/base.py +0 -0
  61. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/job_daemon.py +0 -0
  62. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/layouts/__init__.py +0 -0
  63. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/layouts/base.py +0 -0
  64. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/pipeline.py +0 -0
  65. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/postprocessors/__init__.py +0 -0
  66. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/postprocessors/base.py +0 -0
  67. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/postprocessors/default.py +0 -0
  68. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/__init__.py +0 -0
  69. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/audio/__init__.py +0 -0
  70. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/audio/audio.py +0 -0
  71. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/audio/audio_extractor_process.py +0 -0
  72. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/aws.py +0 -0
  73. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/base.py +0 -0
  74. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/file/__init__.py +0 -0
  75. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/file/archive.py +0 -0
  76. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/__init__.py +0 -0
  77. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/album.py +0 -0
  78. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/album_in_image.py +0 -0
  79. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/depth_esimation.py +0 -0
  80. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/embeddings.py +0 -0
  81. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/filters.py +0 -0
  82. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/generators.py +0 -0
  83. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/histogram.py +0 -0
  84. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/mask.py +0 -0
  85. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/object_detection.py +0 -0
  86. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/resize.py +0 -0
  87. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/segmentation.py +0 -0
  88. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/image/watermark.py +0 -0
  89. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/media_info.py +0 -0
  90. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/nlp/__init__.py +0 -0
  91. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/nlp/address.py +0 -0
  92. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/qr.py +0 -0
  93. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/sci/__init__.py +0 -0
  94. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/sci/base.py +0 -0
  95. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/sci/dataset.py +0 -0
  96. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/sci/time_series/__init__.py +0 -0
  97. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/sci/time_series/predictor.py +0 -0
  98. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/sci/time_series/trainer.py +0 -0
  99. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/tpu_base.py +0 -0
  100. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/video/__init__.py +0 -0
  101. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/video/generators.py +0 -0
  102. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/video/motion_detection.py +0 -0
  103. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/video/resize.py +0 -0
  104. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/video/video_album.py +0 -0
  105. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/video/video_frames.py +0 -0
  106. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/processors/video/video_resample.py +0 -0
  107. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/queues.py +0 -0
  108. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/server.py +0 -0
  109. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/web/__init__.py +0 -0
  110. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/pipelines/web/server.py +0 -0
  111. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/tools/__init__.py +0 -0
  112. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/media/tools/video_interactive.py +0 -0
  113. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/__init__.py +0 -0
  114. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/base.py +0 -0
  115. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/dataset/__init__.py +0 -0
  116. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/dataset/object_detection.py +0 -0
  117. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/evaluation/__init__.py +0 -0
  118. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/evaluation/markdown.py +0 -0
  119. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/evaluation/object_detection.py +0 -0
  120. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/images/__init__.py +0 -0
  121. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/images/base.py +0 -0
  122. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/images/description.py +0 -0
  123. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/images/embeddings.py +0 -0
  124. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/images/object_detection.py +0 -0
  125. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/images/tools.py +0 -0
  126. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/images/transformers.py +0 -0
  127. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/nlp/__init__.py +0 -0
  128. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/nlp/embeddings.py +0 -0
  129. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/nlp/tokenizers/__init__.py +0 -0
  130. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/nlp/tokenizers/bpe.py +0 -0
  131. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/video/__init__.py +0 -0
  132. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/ml/video/description.py +0 -0
  133. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/__init__.py +0 -0
  134. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/monitor.py +0 -0
  135. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/power/__init__.py +0 -0
  136. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/power/ems300.py +0 -0
  137. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/power/sim.py +0 -0
  138. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/power/tools.py +0 -0
  139. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/start.py +0 -0
  140. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/watchdog/__init__.py +0 -0
  141. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/watchdog/base.py +0 -0
  142. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/monitoring/watchdog/process.py +0 -0
  143. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/network/__init__.py +0 -0
  144. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/network/camera.py +0 -0
  145. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/network/sniffer.py +0 -0
  146. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/network/tools.py +0 -0
  147. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/__init__.py +0 -0
  148. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/array.py +0 -0
  149. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/aws/__init__.py +0 -0
  150. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/aws/priority_queue.py +0 -0
  151. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/aws/s3.py +0 -0
  152. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/common.py +0 -0
  153. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/complexity.py +0 -0
  154. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/compress.py +0 -0
  155. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/configuration.py +0 -0
  156. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/crypto.py +0 -0
  157. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/daemon.py +0 -0
  158. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/draw/__init__.py +0 -0
  159. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/draw/contours.py +0 -0
  160. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/formating.py +0 -0
  161. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/hardware.py +0 -0
  162. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/http.py +0 -0
  163. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/logger.py +0 -0
  164. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/os.py +0 -0
  165. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/queue.py +0 -0
  166. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/random.py +0 -0
  167. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/remote.py +0 -0
  168. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/simple_counter.py +0 -0
  169. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/synchronized.py +0 -0
  170. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/timers.py +0 -0
  171. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/tools/totp.py +0 -0
  172. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/web/__init__.py +0 -0
  173. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo/web/common.py +0 -0
  174. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo.egg-info/dependency_links.txt +0 -0
  175. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo.egg-info/entry_points.txt +0 -0
  176. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo.egg-info/requires.txt +0 -0
  177. {sciveo-0.1.76 → sciveo-0.1.77}/sciveo.egg-info/top_level.txt +0 -0
  178. {sciveo-0.1.76 → sciveo-0.1.77}/setup.cfg +0 -0
  179. {sciveo-0.1.76 → sciveo-0.1.77}/setup.py +0 -0
  180. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_complexity.py +0 -0
  181. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_compress.py +0 -0
  182. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_configuration.py +0 -0
  183. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_crypto.py +0 -0
  184. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_eval_markdown.py +0 -0
  185. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_ml_datasets.py +0 -0
  186. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_monitoring.py +0 -0
  187. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_runner.py +0 -0
  188. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_sampling.py +0 -0
  189. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_tokenizers.py +0 -0
  190. {sciveo-0.1.76 → sciveo-0.1.77}/test/test_totp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sciveo
3
- Version: 0.1.76
3
+ Version: 0.1.77
4
4
  Description-Content-Type: text/markdown
5
5
  Provides-Extra: mon
6
6
  Provides-Extra: net
@@ -39,14 +39,15 @@ def main():
39
39
  parser.add_argument('--auth', type=str, default=config['secret_access_key'], help='Auth secret access key')
40
40
  parser.add_argument('--timeout', type=float, default=1.0, help='Timeout')
41
41
  parser.add_argument('--net', type=str, default=None, help='Network like 192.168.10.0/24')
42
+ parser.add_argument('--url', type=str, default=None, help='URL')
42
43
  parser.add_argument('--host', type=str, default=None, help='Host ip or name')
43
44
  parser.add_argument('--port', type=int, default=22, help='Host port number, used for network ops')
44
45
  parser.add_argument('--ports', type=str, default="[]", help='Host ports list')
45
46
  parser.add_argument('--localhost', type=bool, default=False, help='Add localhost to list of hosts')
46
47
  parser.add_argument('--input-path', type=str, default=None, help='Input Path')
47
48
  parser.add_argument('--output-path', type=str, default=None, help='Output Path')
48
- parser.add_argument('--width', type=str, default=None, help='width')
49
- parser.add_argument('--height', type=str, default=None, help='height')
49
+ parser.add_argument('--width', type=int, default=None, help='width')
50
+ parser.add_argument('--height', type=int, default=None, help='height')
50
51
  parser.add_argument('--fps', type=int, help='FPS')
51
52
  parser.add_argument('--stream', type=str, default=None, help='Stream')
52
53
  parser.add_argument('--rate', type=int, help='Rate number')
@@ -101,7 +102,14 @@ def main():
101
102
  elif args.command == 'rtsp':
102
103
  if args.src is None and args.src_id is None:
103
104
  from sciveo.media.capture.nvr import RTSPVideoPlayer
104
- player = RTSPVideoPlayer(f"rtsp://{args.host}:{args.port}/{args.stream}")
105
+ if args.url is not None:
106
+ url = args.url
107
+ elif args.host is not None and args.stream is not None:
108
+ url = f"rtsp://{args.host}:{args.port}/{args.stream}"
109
+ else:
110
+ warning("Invalid URL")
111
+ return
112
+ player = RTSPVideoPlayer(url)
105
113
  player.run()
106
114
  else:
107
115
  from sciveo.media.capture.gst_server import CamFactory, ColorBarFactory
@@ -0,0 +1,81 @@
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
+ # 2025
10
+ #
11
+
12
+ import cv2
13
+ import numpy as np
14
+ from datetime import datetime
15
+ from sciveo.tools.logger import *
16
+
17
+
18
+ class DrawNone:
19
+ def __call__(self, frame, tag):
20
+ return frame
21
+
22
+ class DrawDateTime:
23
+ def __init__(self, position=(10, 10), color=(255, 255, 255), thickness=3, font_scale_factor=0.001, font=cv2.FONT_HERSHEY_SIMPLEX):
24
+ """
25
+ position: tuple (x, y) displacement from top-left
26
+ color: BGR tuple
27
+ thickness: line thickness
28
+ font_scale_factor: relative to frame height (0.0015 is reasonable)
29
+ font: cv2 font
30
+ """
31
+ self.position = position
32
+ self.color = color
33
+ self.thickness = thickness
34
+ self.font = font
35
+ self.font_scale_factor = font_scale_factor
36
+
37
+ def __call__(self, frame, tag):
38
+ """
39
+ Draws date/time (or custom text) on the frame.
40
+
41
+ frame: np.ndarray
42
+ text: optional text to draw; if None, current date/time is used
43
+ position, color, thickness: optional overrides
44
+ """
45
+ if frame is None or len(frame.shape) < 2:
46
+ return frame # invalid frame
47
+
48
+ h, w = frame.shape[:2]
49
+
50
+ font_scale = max(0.2, h * self.font_scale_factor)
51
+
52
+ date_text = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
53
+ draw_text = f"{tag} {date_text}"
54
+
55
+ # Adjust position to avoid going out of frame
56
+ x = min(max(self.position[0], 0), w - 1)
57
+ y = min(max(self.position[1] + int(font_scale * 20), int(font_scale * 20)), h - 1)
58
+
59
+ cv2.putText(frame, draw_text, (x, y), self.font, font_scale, self.color, self.thickness, cv2.LINE_AA)
60
+ return frame
61
+
62
+
63
+
64
+ if __name__ == "__main__":
65
+
66
+ cap = cv2.VideoCapture(0)
67
+ drawer = DrawDateTime(tag="test cam", position=(10, 10))
68
+
69
+ while True:
70
+ ret, frame = cap.read()
71
+ if not ret:
72
+ break
73
+
74
+ frame = drawer(frame)
75
+
76
+ cv2.imshow("Frame", frame)
77
+ if cv2.waitKey(1) & 0xFF == ord('q'):
78
+ break
79
+
80
+ cap.release()
81
+ cv2.destroyAllWindows()
@@ -18,6 +18,7 @@ from gi.repository import Gst, GObject, GstRtspServer, GLib
18
18
  Gst.init(None)
19
19
 
20
20
  from sciveo.tools.logger import *
21
+ from sciveo.media.capture.draw import *
21
22
  from sciveo.media.capture.cam import CameraDaemon
22
23
 
23
24
 
@@ -116,15 +117,24 @@ class ColorBarFactory(RTSPFactoryBase):
116
117
 
117
118
 
118
119
  class CamFactory(ColorBarFactory):
119
- def __init__(self, cam_id, width, height, fps):
120
+ def __init__(self, cam_id, width, height, fps, list_draw={}):
120
121
  super().__init__(width, height, fps)
121
122
  self.cam = CameraDaemon(cam_id=cam_id)
122
123
  self.cam.start()
124
+ self.list_draw = list_draw
125
+ self.list_draw_processors = {
126
+ "none": DrawNone(),
127
+ "dt": DrawDateTime(),
128
+ }
123
129
 
124
130
  def next_frame(self):
125
131
  frame = self.cam.read()
126
132
  if frame is None:
127
133
  frame = super().next_frame()
134
+
135
+ for k, v in self.list_draw.items():
136
+ self.list_draw_processors.get(k, DrawNone())(frame, v)
137
+
128
138
  return frame
129
139
 
130
140
 
@@ -133,5 +143,5 @@ if __name__ == "__main__":
133
143
  # server = ColorBarFactory(640, 480, 10)
134
144
  # server.serve(host="0.0.0.0", port=8554, stream="test")
135
145
 
136
- server = CamFactory(0, 640, 480, 30)
146
+ server = CamFactory(0, 640, 480, 30, list_draw={"dt": "cam-test"})
137
147
  server.serve(host="0.0.0.0", port=8554, stream="camera")
@@ -0,0 +1,2 @@
1
+
2
+ __version__ = '0.1.77'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sciveo
3
- Version: 0.1.76
3
+ Version: 0.1.77
4
4
  Description-Content-Type: text/markdown
5
5
  Provides-Extra: mon
6
6
  Provides-Extra: net
@@ -29,6 +29,7 @@ sciveo/db/read_table.py
29
29
  sciveo/media/__init__.py
30
30
  sciveo/media/capture/__init__.py
31
31
  sciveo/media/capture/cam.py
32
+ sciveo/media/capture/draw.py
32
33
  sciveo/media/capture/gst_server.py
33
34
  sciveo/media/capture/motion_detection.py
34
35
  sciveo/media/capture/nvr.py
@@ -1,2 +0,0 @@
1
-
2
- __version__ = '0.1.76'
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