nedo-vision-worker-core 0.3.8__tar.gz → 0.3.9__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.
Potentially problematic release.
This version of nedo-vision-worker-core might be problematic. Click here for more details.
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/PKG-INFO +4 -4
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/__init__.py +1 -1
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/ai/VideoDebugger.py +9 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/pipeline/PipelineProcessor.py +26 -16
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core.egg-info/PKG-INFO +4 -4
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core.egg-info/requires.txt +2 -2
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/pyproject.toml +4 -5
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/requirements.txt +0 -1
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/MANIFEST.in +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/README.md +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/ai/FrameDrawer.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/ai/ImageDebugger.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/ai/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/callbacks/DetectionCallbackManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/callbacks/DetectionCallbackTypes.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/callbacks/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/cli.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/config/ConfigurationManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/config/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/core_service.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/database/DatabaseManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/database/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/detection/BaseDetector.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/detection/RFDETRDetector.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/detection/YOLODetector.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/detection/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/detection/detection_processing/DetectionProcessor.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/detection/detection_processing/HumanDetectionProcessor.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/detection/detection_processing/PPEDetectionProcessor.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/detection/detection_processing/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/doctor.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/blue/inner_corner.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/blue/inner_frame.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/blue/line.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/blue/top_left.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/blue/top_right.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/red/inner_corner.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/red/inner_frame.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/red/line.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/red/top_left.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/drawing_assets/red/top_right.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/boots-green.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/boots-red.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/gloves-green.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/gloves-red.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/goggles-green.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/goggles-red.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/helmet-green.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/helmet-red.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/mask-red.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/vest-green.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/icons/vest-red.png +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/ai_model.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/auth.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/config.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/dataset_source.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/logs.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/ppe_detection.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/ppe_detection_label.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/restricted_area_violation.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/user.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/worker_source.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/worker_source_pipeline.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/worker_source_pipeline_config.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/worker_source_pipeline_debug.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/models/worker_source_pipeline_detection.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/pipeline/ModelManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/pipeline/PipelineConfigManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/pipeline/PipelineManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/pipeline/PipelinePrepocessor.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/pipeline/PipelineSyncThread.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/pipeline/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/preprocessing/ImageResizer.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/preprocessing/ImageRoi.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/preprocessing/Preprocessor.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/preprocessing/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/AIModelRepository.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/BaseRepository.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/PPEDetectionRepository.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/RestrictedAreaRepository.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/WorkerSourcePipelineDebugRepository.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/WorkerSourcePipelineDetectionRepository.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/WorkerSourcePipelineRepository.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/WorkerSourceRepository.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/repositories/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/services/SharedVideoStreamServer.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/services/VideoSharingDaemon.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/services/VideoSharingDaemonManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/streams/RTMPStreamer.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/streams/SharedVideoDeviceManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/streams/StreamSyncThread.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/streams/VideoStream.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/streams/VideoStreamManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/streams/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/tracker/SFSORT.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/tracker/TrackerManager.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/tracker/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/BoundingBoxMetrics.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/DrawingUtils.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/ModelReadinessChecker.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/PersonAttributeMatcher.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/PersonRestrictedAreaMatcher.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/PipelinePreviewChecker.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/PlatformDetector.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/TablePrinter.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/util/__init__.py +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core.egg-info/SOURCES.txt +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core.egg-info/dependency_links.txt +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core.egg-info/entry_points.txt +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core.egg-info/top_level.txt +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/setup.cfg +0 -0
- {nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nedo-vision-worker-core
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.9
|
|
4
4
|
Summary: Nedo Vision Worker Core Library for AI Vision Processing
|
|
5
5
|
Author-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
|
|
6
6
|
Maintainer-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
|
|
@@ -30,7 +30,7 @@ Classifier: Environment :: No Input/Output (Daemon)
|
|
|
30
30
|
Requires-Python: >=3.8
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
Requires-Dist: alembic>=1.8.0
|
|
33
|
-
Requires-Dist: numpy
|
|
33
|
+
Requires-Dist: numpy<2.0.0,>=1.21.0
|
|
34
34
|
Requires-Dist: pillow>=8.0.0
|
|
35
35
|
Requires-Dist: psutil>=5.9.0
|
|
36
36
|
Requires-Dist: scipy>=1.9.0
|
|
@@ -40,8 +40,6 @@ Requires-Dist: torch>=1.9.0
|
|
|
40
40
|
Requires-Dist: torchvision>=0.10.0
|
|
41
41
|
Requires-Dist: ultralytics>=8.0.0
|
|
42
42
|
Requires-Dist: rfdetr<2.0.0,>=1.2.0
|
|
43
|
-
Provides-Extra: opencv
|
|
44
|
-
Requires-Dist: opencv-python>=4.6.0; extra == "opencv"
|
|
45
43
|
Provides-Extra: dev
|
|
46
44
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
47
45
|
Requires-Dist: black>=22.0.0; extra == "dev"
|
|
@@ -49,6 +47,8 @@ Requires-Dist: isort>=5.10.0; extra == "dev"
|
|
|
49
47
|
Requires-Dist: mypy>=0.950; extra == "dev"
|
|
50
48
|
Requires-Dist: flake8>=4.0.0; extra == "dev"
|
|
51
49
|
Requires-Dist: pre-commit>=2.17.0; extra == "dev"
|
|
50
|
+
Provides-Extra: opencv
|
|
51
|
+
Requires-Dist: opencv-python<5.0.0,>=4.6.0; extra == "opencv"
|
|
52
52
|
|
|
53
53
|
# Nedo Vision Worker Core
|
|
54
54
|
|
{nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/__init__.py
RENAMED
|
@@ -7,7 +7,7 @@ A library for running AI vision processing and detection in the Nedo Vision plat
|
|
|
7
7
|
from .core_service import CoreService
|
|
8
8
|
from .callbacks import DetectionType, CallbackTrigger, DetectionData, IntervalMetadata
|
|
9
9
|
|
|
10
|
-
__version__ = "0.3.
|
|
10
|
+
__version__ = "0.3.9"
|
|
11
11
|
__all__ = [
|
|
12
12
|
"CoreService",
|
|
13
13
|
"DetectionType",
|
|
@@ -59,6 +59,15 @@ class VideoDebugger:
|
|
|
59
59
|
except Exception as e:
|
|
60
60
|
logging.error(f"Error closing window {window_name}: {e}")
|
|
61
61
|
del self.windows[window_name]
|
|
62
|
+
|
|
63
|
+
def is_window_open(self, pipeline_id):
|
|
64
|
+
"""Check if a window is open for a given pipeline."""
|
|
65
|
+
with self.lock:
|
|
66
|
+
# Check if any window exists for this pipeline
|
|
67
|
+
for window_name in self.windows.keys():
|
|
68
|
+
if f"Pipeline {pipeline_id}" in window_name:
|
|
69
|
+
return True
|
|
70
|
+
return False
|
|
62
71
|
|
|
63
72
|
def close_all(self):
|
|
64
73
|
"""Close all windows."""
|
|
@@ -45,7 +45,7 @@ class PipelineProcessor:
|
|
|
45
45
|
self.rtmp_streamer = None
|
|
46
46
|
self.rtmp_streaming_active = False
|
|
47
47
|
self.last_preview_check_time = 0
|
|
48
|
-
self.preview_check_interval =
|
|
48
|
+
self.preview_check_interval = 10.0 # Check every 10 seconds (reduced from 5s to save CPU)
|
|
49
49
|
self.pipeline_repo = WorkerSourcePipelineRepository()
|
|
50
50
|
|
|
51
51
|
self.detection_processor_codes = [
|
|
@@ -174,14 +174,20 @@ class PipelineProcessor:
|
|
|
174
174
|
)
|
|
175
175
|
self.detection_thread.start()
|
|
176
176
|
|
|
177
|
+
target_render_fps = 25.0
|
|
178
|
+
target_frame_time = 1.0 / target_render_fps
|
|
179
|
+
|
|
177
180
|
try:
|
|
178
181
|
while self.running:
|
|
182
|
+
loop_start = time.time()
|
|
183
|
+
|
|
179
184
|
frame = video_manager.get_frame(worker_source_id)
|
|
180
185
|
|
|
181
186
|
if frame is None:
|
|
182
187
|
if not self._handle_frame_failure(video_manager, worker_source_id):
|
|
183
188
|
break
|
|
184
189
|
# no frame this tick—just continue (the streamer will repeat last good frame)
|
|
190
|
+
time.sleep(0.04)
|
|
185
191
|
continue
|
|
186
192
|
|
|
187
193
|
# successful frame
|
|
@@ -189,18 +195,23 @@ class PipelineProcessor:
|
|
|
189
195
|
self.last_successful_frame_time = time.time()
|
|
190
196
|
self.frame_counter += 1
|
|
191
197
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
self.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
198
|
+
should_draw = self.rtmp_streaming_active or self.debug_flag or self.video_debugger.is_window_open(pipeline_id)
|
|
199
|
+
|
|
200
|
+
if should_draw:
|
|
201
|
+
# draw annotations
|
|
202
|
+
try:
|
|
203
|
+
self.frame_drawer.draw_polygons(frame)
|
|
204
|
+
frame_to_draw = frame.copy() if self.debug_flag else frame
|
|
205
|
+
drawn_frame = self.frame_drawer.draw_frame(
|
|
206
|
+
frame_to_draw,
|
|
207
|
+
self.tracked_objects_render,
|
|
208
|
+
with_trails=True,
|
|
209
|
+
trail_length=int(max(1, 2 / self.detection_interval))
|
|
210
|
+
)
|
|
211
|
+
except Exception as e:
|
|
212
|
+
logging.error(f"❌ Draw failed, using raw frame: {e}")
|
|
213
|
+
drawn_frame = frame
|
|
214
|
+
else:
|
|
204
215
|
drawn_frame = frame
|
|
205
216
|
|
|
206
217
|
# debug snapshot if requested
|
|
@@ -268,14 +279,13 @@ class PipelineProcessor:
|
|
|
268
279
|
except queue.Full:
|
|
269
280
|
pass
|
|
270
281
|
|
|
271
|
-
# visualize
|
|
272
282
|
try:
|
|
273
283
|
self.video_debugger.show_frame(pipeline_id, worker_source_id, drawn_frame)
|
|
274
284
|
except Exception as e:
|
|
275
285
|
logging.error(f"⚠️ Failed to render frame for pipeline {pipeline_id}: {e}")
|
|
276
286
|
|
|
277
|
-
|
|
278
|
-
sleep_time =
|
|
287
|
+
loop_elapsed = time.time() - loop_start
|
|
288
|
+
sleep_time = max(0.001, target_frame_time - loop_elapsed)
|
|
279
289
|
time.sleep(sleep_time)
|
|
280
290
|
|
|
281
291
|
except Exception as e:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nedo-vision-worker-core
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.9
|
|
4
4
|
Summary: Nedo Vision Worker Core Library for AI Vision Processing
|
|
5
5
|
Author-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
|
|
6
6
|
Maintainer-email: Willy Achmat Fauzi <willy.achmat@gmail.com>
|
|
@@ -30,7 +30,7 @@ Classifier: Environment :: No Input/Output (Daemon)
|
|
|
30
30
|
Requires-Python: >=3.8
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
Requires-Dist: alembic>=1.8.0
|
|
33
|
-
Requires-Dist: numpy
|
|
33
|
+
Requires-Dist: numpy<2.0.0,>=1.21.0
|
|
34
34
|
Requires-Dist: pillow>=8.0.0
|
|
35
35
|
Requires-Dist: psutil>=5.9.0
|
|
36
36
|
Requires-Dist: scipy>=1.9.0
|
|
@@ -40,8 +40,6 @@ Requires-Dist: torch>=1.9.0
|
|
|
40
40
|
Requires-Dist: torchvision>=0.10.0
|
|
41
41
|
Requires-Dist: ultralytics>=8.0.0
|
|
42
42
|
Requires-Dist: rfdetr<2.0.0,>=1.2.0
|
|
43
|
-
Provides-Extra: opencv
|
|
44
|
-
Requires-Dist: opencv-python>=4.6.0; extra == "opencv"
|
|
45
43
|
Provides-Extra: dev
|
|
46
44
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
47
45
|
Requires-Dist: black>=22.0.0; extra == "dev"
|
|
@@ -49,6 +47,8 @@ Requires-Dist: isort>=5.10.0; extra == "dev"
|
|
|
49
47
|
Requires-Dist: mypy>=0.950; extra == "dev"
|
|
50
48
|
Requires-Dist: flake8>=4.0.0; extra == "dev"
|
|
51
49
|
Requires-Dist: pre-commit>=2.17.0; extra == "dev"
|
|
50
|
+
Provides-Extra: opencv
|
|
51
|
+
Requires-Dist: opencv-python<5.0.0,>=4.6.0; extra == "opencv"
|
|
52
52
|
|
|
53
53
|
# Nedo Vision Worker Core
|
|
54
54
|
|
|
@@ -48,7 +48,7 @@ classifiers = [
|
|
|
48
48
|
requires-python = ">=3.8"
|
|
49
49
|
dependencies = [
|
|
50
50
|
"alembic>=1.8.0",
|
|
51
|
-
"numpy>=1.21.0",
|
|
51
|
+
"numpy>=1.21.0,<2.0.0",
|
|
52
52
|
"pillow>=8.0.0",
|
|
53
53
|
"psutil>=5.9.0",
|
|
54
54
|
"scipy>=1.9.0",
|
|
@@ -61,10 +61,6 @@ dependencies = [
|
|
|
61
61
|
]
|
|
62
62
|
|
|
63
63
|
[project.optional-dependencies]
|
|
64
|
-
# OpenCV dependencies - use this if not using system packages or custom build
|
|
65
|
-
opencv = [
|
|
66
|
-
"opencv-python>=4.6.0",
|
|
67
|
-
]
|
|
68
64
|
dev = [
|
|
69
65
|
"pytest>=7.0.0",
|
|
70
66
|
"black>=22.0.0",
|
|
@@ -73,6 +69,9 @@ dev = [
|
|
|
73
69
|
"flake8>=4.0.0",
|
|
74
70
|
"pre-commit>=2.17.0",
|
|
75
71
|
]
|
|
72
|
+
opencv = [
|
|
73
|
+
"opencv-python>=4.6.0,<5.0.0",
|
|
74
|
+
]
|
|
76
75
|
|
|
77
76
|
[project.urls]
|
|
78
77
|
Homepage = "https://gitlab.com/sindika/research/nedo-vision/nedo-vision-worker-core-v2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/cli.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
|
{nedo_vision_worker_core-0.3.8 → nedo_vision_worker_core-0.3.9}/nedo_vision_worker_core/doctor.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
|