sciveo 0.1.82__tar.gz → 0.1.84__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.
- {sciveo-0.1.82 → sciveo-0.1.84}/PKG-INFO +1 -1
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/gst_server.py +17 -4
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/nvr.py +6 -1
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/rpi.py +7 -4
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/rtsp.py +6 -1
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/evaluation/object_detection.py +11 -5
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/timers.py +5 -0
- sciveo-0.1.84/sciveo/version.py +2 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo.egg-info/PKG-INFO +1 -1
- sciveo-0.1.82/sciveo/version.py +0 -2
- {sciveo-0.1.82 → sciveo-0.1.84}/README.md +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/api/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/api/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/api/predictors.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/api/server.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/api/upload.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/cli.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/common/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/common/configuration.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/common/model.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/common/optimizers.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/common/sampling.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/content/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/content/dataset.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/content/experiment.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/content/project.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/content/runner.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/db/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/db/read_table.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/cam.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/draw.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/asteroid.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/base_move.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/circle.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/game.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/geometrics.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/gravity_ball.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/laser.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/rocket.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/space_asteroids.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/games/asteroids/volume_bar.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/motion_detection.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/capture/readers.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/encoders/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/encoders/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/encoders/normalizer.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/nlp/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/nlp/search.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/time_series/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/time_series/dataset.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/time_series/predictor.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/time_series/trainer.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/ml/time_series/window_generator.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/job_daemon.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/layouts/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/layouts/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/pipeline.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/postprocessors/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/postprocessors/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/postprocessors/default.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/audio/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/audio/audio.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/audio/audio_extractor_process.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/aws.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/file/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/file/archive.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/album.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/album_in_image.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/depth_esimation.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/embeddings.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/filters.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/generators.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/histogram.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/mask.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/object_detection.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/resize.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/segmentation.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/image/watermark.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/media_info.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/nlp/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/nlp/address.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/qr.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/dataset.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/time_series/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/time_series/predictor.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/time_series/trainer.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/tpu_base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/video/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/video/generators.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/video/motion_detection.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/video/resize.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/video/video_album.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/video/video_frames.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/video/video_resample.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/queues.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/server.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/web/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/web/server.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/tools/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/tools/video_interactive.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/dataset/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/dataset/object_detection.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/evaluation/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/evaluation/markdown.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/images/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/images/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/images/description.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/images/embeddings.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/images/object_detection.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/images/tools.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/images/transformers.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/nlp/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/nlp/embeddings.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/nlp/tokenizers/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/nlp/tokenizers/bpe.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/video/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/ml/video/description.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/monitor.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/power/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/power/ems300.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/power/sim.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/power/tools.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/start.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/watchdog/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/watchdog/base.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/monitoring/watchdog/process.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/network/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/network/camera.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/network/sniffer.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/network/tools.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/array.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/aws/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/aws/priority_queue.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/aws/s3.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/common.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/complexity.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/compress.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/configuration.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/crypto.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/daemon.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/draw/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/draw/contours.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/formating.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/hardware.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/http.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/logger.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/os.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/queue.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/random.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/remote.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/simple_counter.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/synchronized.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/tools/totp.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/web/__init__.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo/web/common.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo.egg-info/SOURCES.txt +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo.egg-info/dependency_links.txt +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo.egg-info/entry_points.txt +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo.egg-info/requires.txt +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/sciveo.egg-info/top_level.txt +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/setup.cfg +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/setup.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_complexity.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_compress.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_configuration.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_crypto.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_eval_markdown.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_ml_datasets.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_monitoring.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_runner.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_sampling.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_tokenizers.py +0 -0
- {sciveo-0.1.82 → sciveo-0.1.84}/test/test_totp.py +0 -0
|
@@ -38,9 +38,11 @@ class RTSPFactoryBase(GstRtspServer.RTSPMediaFactory):
|
|
|
38
38
|
f"appsrc name={self.appsrc_name} is-live=true block=true format=time "
|
|
39
39
|
f"caps=video/x-raw,format=BGR,width={self.width},height={self.height},framerate={self.fps}/1 "
|
|
40
40
|
"! videoconvert "
|
|
41
|
-
"!
|
|
41
|
+
"! video/x-raw,format=I420 "
|
|
42
|
+
"! x264enc tune=zerolatency speed-preset=ultrafast key-int-max=30 "
|
|
42
43
|
"! rtph264pay config-interval=1 name=pay0 pt=96"
|
|
43
44
|
)
|
|
45
|
+
info("GST Pipeline", pipeline_str)
|
|
44
46
|
return Gst.parse_launch(pipeline_str)
|
|
45
47
|
|
|
46
48
|
def do_configure(self, rtsp_media):
|
|
@@ -50,13 +52,16 @@ class RTSPFactoryBase(GstRtspServer.RTSPMediaFactory):
|
|
|
50
52
|
|
|
51
53
|
def on_need_data(self, src, length):
|
|
52
54
|
frame = self.next_frame()
|
|
55
|
+
frame = np.ascontiguousarray(frame, dtype=np.uint8)
|
|
53
56
|
|
|
54
57
|
data = frame.tobytes()
|
|
55
58
|
buf = Gst.Buffer.new_allocate(None, len(data), None)
|
|
56
59
|
buf.fill(0, data)
|
|
60
|
+
|
|
57
61
|
buf.duration = Gst.SECOND // self.fps
|
|
58
62
|
buf.pts = buf.dts = self.timestamp
|
|
59
63
|
self.timestamp += buf.duration
|
|
64
|
+
|
|
60
65
|
src.emit("push-buffer", buf)
|
|
61
66
|
|
|
62
67
|
def next_frame(self):
|
|
@@ -141,12 +146,20 @@ class CamFactory(ColorBarFactory):
|
|
|
141
146
|
self.cam = CameraDaemon(cam_id=self.cam_id)
|
|
142
147
|
|
|
143
148
|
def next_frame(self):
|
|
144
|
-
|
|
149
|
+
try:
|
|
150
|
+
frame = self.cam.read()
|
|
151
|
+
except Exception as e:
|
|
152
|
+
exception(e, "CAM frame read FAIL")
|
|
153
|
+
frame = None
|
|
154
|
+
|
|
145
155
|
if frame is None:
|
|
146
156
|
frame = super().next_frame()
|
|
147
157
|
|
|
148
|
-
|
|
149
|
-
self.
|
|
158
|
+
try:
|
|
159
|
+
for k, v in self.configuration.get("draw", {}).items():
|
|
160
|
+
self.list_draw_processors.get(k, DrawNone())(frame, v)
|
|
161
|
+
except Exception as e:
|
|
162
|
+
exception(e, "DRAW FAIL")
|
|
150
163
|
|
|
151
164
|
self.fps_next_frame.update()
|
|
152
165
|
|
|
@@ -22,6 +22,7 @@ from sciveo.tools.logger import *
|
|
|
22
22
|
from sciveo.tools.daemon import DaemonBase
|
|
23
23
|
from sciveo.tools.queue import TouchedFilePathQueue
|
|
24
24
|
from sciveo.tools.simple_counter import RunCounter
|
|
25
|
+
from sciveo.tools.timers import FPSCounter
|
|
25
26
|
from sciveo.media.capture.motion_detection import MotionDetectorDaemon
|
|
26
27
|
|
|
27
28
|
|
|
@@ -205,13 +206,16 @@ class RTSPVideoPlayer:
|
|
|
205
206
|
self.name = name
|
|
206
207
|
self.cap = None
|
|
207
208
|
self.is_running = False
|
|
209
|
+
self.fps = FPSCounter(period=10, tag=f"{name}", printer=info, round_value=1)
|
|
208
210
|
|
|
209
211
|
def open(self):
|
|
210
|
-
info("Opening
|
|
212
|
+
info("Opening...", self.rtsp_url)
|
|
211
213
|
self.cap = cv2.VideoCapture(self.rtsp_url)
|
|
212
214
|
if not self.cap.isOpened():
|
|
213
215
|
error("Failed to open RTSP URL", self.rtsp_url)
|
|
214
216
|
self.cap = None
|
|
217
|
+
else:
|
|
218
|
+
info("Opened", self.rtsp_url)
|
|
215
219
|
|
|
216
220
|
def close(self):
|
|
217
221
|
if self.cap:
|
|
@@ -250,6 +254,7 @@ class RTSPVideoPlayer:
|
|
|
250
254
|
info("Quit key pressed, stopping player")
|
|
251
255
|
self.close()
|
|
252
256
|
self.is_running = False
|
|
257
|
+
self.fps.update()
|
|
253
258
|
|
|
254
259
|
def finalise(self):
|
|
255
260
|
self.close()
|
|
@@ -46,10 +46,13 @@ class RPICamera(CameraDaemon):
|
|
|
46
46
|
self.picam2.stop()
|
|
47
47
|
|
|
48
48
|
def read_frame(self):
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
self.
|
|
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):
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import time
|
|
13
13
|
import cv2
|
|
14
14
|
|
|
15
|
+
from sciveo.tools.timers import FPSCounter
|
|
15
16
|
from sciveo.tools.logger import *
|
|
16
17
|
|
|
17
18
|
|
|
@@ -23,13 +24,16 @@ class RTSPVideoPlayer:
|
|
|
23
24
|
self.name = name
|
|
24
25
|
self.cap = None
|
|
25
26
|
self.is_running = False
|
|
27
|
+
self.fps = FPSCounter(period=10, tag=f"{name}", printer=info, round_value=1)
|
|
26
28
|
|
|
27
29
|
def open(self):
|
|
28
|
-
info("Opening
|
|
30
|
+
info("Opening...", self.rtsp_url)
|
|
29
31
|
self.cap = cv2.VideoCapture(self.rtsp_url)
|
|
30
32
|
if not self.cap.isOpened():
|
|
31
33
|
error("Failed to open RTSP URL", self.rtsp_url)
|
|
32
34
|
self.cap = None
|
|
35
|
+
else:
|
|
36
|
+
info("Opened", self.rtsp_url)
|
|
33
37
|
|
|
34
38
|
def close(self):
|
|
35
39
|
if self.cap:
|
|
@@ -68,6 +72,7 @@ class RTSPVideoPlayer:
|
|
|
68
72
|
info("Quit key pressed, stopping player")
|
|
69
73
|
self.close()
|
|
70
74
|
self.is_running = False
|
|
75
|
+
self.fps.update()
|
|
71
76
|
|
|
72
77
|
def finalise(self):
|
|
73
78
|
self.close()
|
|
@@ -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
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
sciveo-0.1.82/sciveo/version.py
DELETED
|
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
|
|
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
|
{sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/audio/audio_extractor_process.py
RENAMED
|
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
|
{sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/time_series/__init__.py
RENAMED
|
File without changes
|
{sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/time_series/predictor.py
RENAMED
|
File without changes
|
{sciveo-0.1.82 → sciveo-0.1.84}/sciveo/media/pipelines/processors/sci/time_series/trainer.py
RENAMED
|
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
|
|
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
|
|
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
|