Realtime 3D (depth) + detection pipeline for laptop cameras (OpenCV optional)
Project description
scanLt
Realtime camera pipeline for detection + monocular depth ("3D") with pluggable backends.
- Project/package name (PyPI):
scanLt - Import name (Python):
scanlt
This library does not require OpenCV.
Install
Minimal (always works)
CPU-only, no special hardware acceleration:
pip install scanlt3d
Optional extras
You can install extra backends depending on your machine.
pip install "scanlt3d[onnx]" # ONNX Runtime (recommended cross-platform)
pip install "scanlt3d[torch]" # PyTorch (CUDA/MPS support)
pip install "scanlt3d[mediapipe]" # (planned) camera source via MediaPipe
Note: Hardware acceleration depends on which runtime is installed and available on your system (CUDA/DirectML/MPS).
Quickstart (works immediately)
import scanlt
# Runs a realtime loop with a built-in dummy camera source.
# This ensures `import + run()` never fails even if no webcam/backend is available.
scanlt.run()
Use by hardware (CPU / NVIDIA / Windows iGPU / Mac M)
scanLt can auto-detect the best available backend:
import scanlt
print(scanlt.choose_backend())
1) CPU (Intel/AMD)
Install:
pip install scanlt3d
# recommended runtime
pip install "scanLt[onnx]"
What to expect:
- Best compatibility.
- Realtime depends heavily on your detector/depth model sizes.
- Use lower resolution / run depth less frequently for higher FPS.
2) NVIDIA GPU (CUDA)
Two typical options:
- ONNX Runtime CUDA (best for ONNX models)
- PyTorch CUDA (best for torch models)
Install (choose one):
# Option A: PyTorch CUDA
pip install "scanLt[torch]"
# Option B: ONNX Runtime (you must install a CUDA-enabled onnxruntime build)
pip install "scanLt[onnx]"
Notes:
- If
choose_backend()returnscuda, scanLt detected a CUDA-capable runtime. - CUDA packaging varies by OS/driver; if CUDA runtime is not available, scanLt falls back to CPU.
3) Windows Intel/AMD iGPU (DirectML)
scanLt can pick dml if your ONNX Runtime installation exposes a DirectML provider.
Install:
pip install "scanLt[onnx]"
Notes:
- DirectML is Windows-specific.
- If DirectML is not available, scanLt falls back to CPU.
4) macOS Apple Silicon (M1/M2/M3)
Install:
pip install scanlt3d
pip install "scanLt[torch]"
Notes:
- scanLt will try to use
mpsif PyTorch MPS is available. - If MPS is not available or unsupported by the model, it falls back to CPU.
Force backend (override auto-detect)
You can override backend selection via environment variable:
SCAN3D_BACKEND=cpuSCAN3D_BACKEND=cudaSCAN3D_BACKEND=dmlSCAN3D_BACKEND=mps
Example:
# Windows PowerShell
setx SCAN3D_BACKEND cuda
(Then restart your terminal.)
Provide your own detector/depth
scanLt is designed to let you plug in your own models.
Minimal interfaces
Detector.predict(frame) -> list[Detection]DepthEstimator.predict(frame, detections=None) -> depth_map
Example
import scanlt
class MyDetector:
def predict(self, frame):
# return list of scanlt.api.Detection
return []
class MyDepth:
def predict(self, frame, detections=None):
import numpy as np
h, w = frame.shape[:2]
return np.zeros((h, w), dtype=np.float32)
def on_result(res):
# res.frame: np.ndarray (H,W,3)
# res.detections: list
# res.depth: np.ndarray (H,W) or None
# res.fps: float
print(res.fps)
scanlt.run(detector=MyDetector(), depth=MyDepth(), on_result=on_result, max_frames=100)
Troubleshooting
pip install succeeds but choose_backend() is still CPU
This usually means:
- CUDA / DirectML / MPS runtime is not installed or not detected
- your model runtime doesn't support the needed execution provider
scanLt will always fall back to CPU to stay usable.
I want real webcam input
Current default run() uses a dummy source. For real camera sources, you will plug in a FrameSource (or enable the MediaPipe source once implemented).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scanlt3d-0.1.2.tar.gz.
File metadata
- Download URL: scanlt3d-0.1.2.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fa56b0278acce427dffa5eaabbdbe23779a58b14d6bc174bb625b1385fe4870
|
|
| MD5 |
ed279d35e43f21ed19bcd9d00dacb3e9
|
|
| BLAKE2b-256 |
8320eb1b22987382b9c2a54dc4474a0c9a1a0bed81c7d38c79c952234f70ed27
|
File details
Details for the file scanlt3d-0.1.2-py3-none-any.whl.
File metadata
- Download URL: scanlt3d-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5dd25b51285e797e6fd1fff700d167c7087ccb0b683749f100e17a9280646578
|
|
| MD5 |
e9b6675d761632fca150d3508eaa0c77
|
|
| BLAKE2b-256 |
673548b9f581cbc9439ad493d753d0c04a2d94b10ae6436b3519ef6fbbfd12ea
|