{"id":35654935,"url":"https://github.com/michaelflppv/cam-vision","last_synced_at":"2026-01-19T21:30:37.590Z","repository":{"id":332410918,"uuid":"1074374593","full_name":"michaelflppv/cam-vision","owner":"michaelflppv","description":"SecureVision is a modular, self-hosted computer vision pipeline for live camera feeds. It can recognize known faces and read license plates, then publish events through a FastAPI server and a desktop dashboard.","archived":false,"fork":false,"pushed_at":"2026-01-10T19:08:21.000Z","size":7862,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-13T19:51:22.558Z","etag":null,"topics":["biometric-identification","car-plate-recognition","computer-vision","face-recognition","onnx","onnxruntime","opencv","pyside6","python","rtsp-stream","tesseract","tesseract-ocr","yolov8"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaelflppv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-11T17:02:26.000Z","updated_at":"2026-01-10T19:08:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/michaelflppv/cam-vision","commit_stats":null,"previous_names":["michaelflppv/cam-vision"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/michaelflppv/cam-vision","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelflppv%2Fcam-vision","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelflppv%2Fcam-vision/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelflppv%2Fcam-vision/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelflppv%2Fcam-vision/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaelflppv","download_url":"https://codeload.github.com/michaelflppv/cam-vision/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelflppv%2Fcam-vision/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28585481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["biometric-identification","car-plate-recognition","computer-vision","face-recognition","onnx","onnxruntime","opencv","pyside6","python","rtsp-stream","tesseract","tesseract-ocr","yolov8"],"created_at":"2026-01-05T15:12:43.149Z","updated_at":"2026-01-19T21:30:37.569Z","avatar_url":"https://github.com/michaelflppv.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SecureVision\n\n\u003e Privacy-first, self-hosted computer vision for face recognition and license plate detection\n\nSecureVision is an open-source, self-hosted computer vision platform that processes live camera feeds to identify trusted faces and license plates. All processing happens locally on your device—no cloud, no subscriptions, complete privacy.\n\n[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-2b5b84)](https://www.python.org/)\n[![Poetry](https://img.shields.io/badge/poetry-managed-60a5fa)](https://python-poetry.org/)\n[![FastAPI](https://img.shields.io/badge/api-fastapi-009688)](https://fastapi.tiangolo.com/)\n[![PySide6](https://img.shields.io/badge/ui-pyside6-4a90e2)](https://doc.qt.io/qtforpython/)\n[![License: MIT](https://img.shields.io/badge/license-MIT-0b7285)](LICENSE)\n\n## Highlights\n\n- **Multi-source capture** - USB webcams, RTSP/HTTP network cameras, video files\n- **Face recognition** - Identify trusted people using InsightFace embeddings (no training required)\n- **License plate recognition** - Detect and read plates with YOLOv8 + Tesseract OCR\n- **Desktop application** - Cross-platform Qt UI with live preview and event monitoring\n- **REST \u0026 WebSocket API** - Real-time event streaming and integration support\n- **Privacy-first** - All processing happens locally, no cloud dependencies\n- **Modular design** - Easy to extend and customize for your use case\n\n## Use Cases\n\n- **Home Security**: Recognize family members at front door, track visitor arrivals\n- **Parking Management**: Monitor authorized vehicles in garage or parking lot\n- **Business Access Control**: Log employee entry/exit via face recognition\n- **Property Monitoring**: Track license plates entering/leaving property\n- **Smart Home Integration**: Trigger automations based on detected people or vehicles\n\n## Requirements\n\n**Minimum:**\n- Python 3.10, 3.11, or 3.12 (3.13 not yet supported)\n- 4-core CPU, 8 GB RAM, 20 GB storage\n- Poetry for dependency management\n- Optional: Tesseract OCR (for license plate recognition)\n- Optional: YOLOv8 plate model at `weights/yolov8n_plate.pt`\n\n**Recommended:**\n- 8+ core CPU, 16 GB RAM, SSD storage\n- Dedicated computer (repurposed laptop works great)\n- Wired network connection for IP cameras\n\n## Quick Start\n\n### 1. Install Dependencies\n\n```bash\n# Install Poetry\npipx install poetry\n\n# Install SecureVision\ngit clone https://github.com/yourusername/cam-vision.git\ncd cam-vision\npoetry install\n```\n\n### 2. Install Optional Components\n\n**Tesseract OCR (for plate recognition):**\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install tesseract-ocr\n\n# macOS\nbrew install tesseract\n\n# Windows: Download from https://github.com/UB-Mannheim/tesseract/wiki\n```\n\n### 3. Choose Configuration\n\n```bash\n# For MacBook/USB webcam\ncp examples/env/complete-home.env .env\n\n# For IP camera (RTSP)\ncp examples/env/rtsp-doorbell.env .env\n\n# Edit as needed\nnano .env\n```\n\n### 4. Launch Desktop Application\n\n```bash\nset -a; source .env; set +a\npoetry run securevision-qt\n```\n\nThe desktop app provides live camera preview with detection overlays and real-time event log.\n\n### 5. Set Up Face Recognition (Optional)\n\n```bash\n# Create face gallery\nmkdir -p data/faces/trusted/john_doe\n# Add 3-5 photos of each person to their folder\n\n# Enroll faces\npoetry run securevision-face-enroll ./data/faces/trusted\n```\n\n### 6. Set Up License Plates (Optional)\n\n```bash\n# Create whitelist\necho \"ABC1234,Family car\" \u003e data/plates/whitelist.csv\necho \"XYZ9876,Guest pass\" \u003e\u003e data/plates/whitelist.csv\n```\n\n## Configuration\n\nSecureVision uses environment variables for configuration (no config files needed).\n\n**Quick examples:**\n\n```bash\n# Video source\nexport SECUREVISION__VIDEO__SOURCE__TYPE=rtsp\nexport SECUREVISION__VIDEO__SOURCE__URL=rtsp://user:pass@camera.local:554/stream\nexport SECUREVISION__VIDEO__FPS_TARGET=15\n\n# Enable/disable features\nexport SECUREVISION__FACE__ENABLED=true\nexport SECUREVISION__PLATES__ENABLED=true\n\n# API settings\nexport SECUREVISION__API__PORT=8000\nexport SECUREVISION__API__AUTH_TOKEN=your-secret-token\n```\n\n**Configuration templates** are available in `examples/env/` for common scenarios:\n- `complete-home.env` - Full home security setup\n- `rtsp-doorbell.env` - RTSP doorbell camera\n- `parking-lot.env` - Parking garage monitoring\n- `usb-webcam.env` - USB/MacBook webcam\n\nSee [docs/CONFIG.md](docs/CONFIG.md) for complete configuration reference.\n\n## API \u0026 Integration\n\nSecureVision provides REST and WebSocket APIs for integration with other systems.\n\n### REST API\n\n```bash\n# Start API server\npoetry run securevision-api\n\n# Query recent events\ncurl http://localhost:8000/events?limit=20\n\n# Get system health\ncurl http://localhost:8000/health\n```\n\n### WebSocket API\n\nReal-time event streaming:\n\n```javascript\nconst ws = new WebSocket('ws://localhost:8000/stream');\n\nws.onmessage = (event) =\u003e {\n  const data = JSON.parse(event.data);\n  if (data.type === 'face_match') {\n    console.log(`Person detected: ${data.payload.person_name}`);\n  } else if (data.type === 'plate_read') {\n    console.log(`Plate detected: ${data.payload.plate_text}`);\n  }\n};\n```\n\nSee [docs/API.md](docs/API.md) for complete API documentation.\n\n## CLI Tools\n\nSecureVision includes several command-line tools:\n\n- `securevision-qt` - Desktop application with GUI\n- `securevision-api` - REST/WebSocket API server\n- `securevision-face-enroll` - Enroll faces into gallery\n- `securevision-capture` - Frame capture utility\n- `securevision-preview` - Video preview without GUI\n- `securevision-onvif-discover` - Discover ONVIF cameras on network\n\n## Project Structure\n\n```\ncam_vision/\n  api/          FastAPI services and WebSocket streaming\n  cli/          CLI entrypoints\n  config.py     Pydantic settings and defaults\n  face/         Face recognition models and enrollment\n  io/           Video capture and device adapters\n  pipeline/     Orchestration, state, and triggers\n  plates/       Plate detection and OCR\n  qt_ui/        PySide6 desktop application\n  tracking/     Multi-frame confirmation logic\n  utils/        Shared helpers and utilities\n  types.py      Core dataclasses and enums\n\ndata/           Local runtime assets (faces, plates)\ndocs/           Documentation\nexamples/env/   Environment templates\ntests/          Pytest suite mirroring cam_vision/\nweights/        Pretrained model weights\n```\n\n## Documentation\n\nComprehensive documentation is available in the `docs/` directory:\n\n| Document | Description |\n|----------|-------------|\n| [User Guide](docs/USER_GUIDE.md) | Complete user guide for setup and usage |\n| [API Reference](docs/API.md) | REST and WebSocket API reference |\n| [Configuration](docs/CONFIG.md) | Configuration options reference |\n| [Deployment](docs/DEPLOYMENT.md) | Production deployment guide |\n| [Troubleshooting](docs/TROUBLESHOOTING.md) | Common issues and solutions |\n| [FAQ](docs/FAQ.md) | Frequently asked questions |\n| [Security](docs/SECURITY.md) | Security policy and best practices |\n| [Changelog](docs/CHANGELOG.md) | Version history and changes |\n| [Contributing](CONTRIBUTING.md) | Contribution guidelines |\n\n## Development\n\n### Running Tests\n\n```bash\n# Run all tests\npoetry run pytest\n\n# Run with coverage\npoetry run pytest --cov=cam_vision\n\n# Run benchmarks\npoetry run pytest tests/benchmarks/ --benchmark-only\n```\n\n### Code Quality\n\n```bash\n# Run all checks (linting, formatting, type checking)\npoetry run pre-commit run --all-files\n\n# Individual tools\npoetry run ruff check .\npoetry run black .\npoetry run isort .\n```\n\n### Development Setup\n\n```bash\n# Install dependencies (including dev tools)\npoetry install\n\n# Install pre-commit hooks\npoetry run pre-commit install\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed development guidelines.\n\n## Security and Privacy\n\nSecureVision is designed with privacy as a core principle:\n\n- **Local processing** - All data stays on your device\n- **No cloud** - No external API calls or data transmission\n- **Open source** - Transparent, auditable code\n- **Optional authentication** - Secure your API with bearer tokens\n- **Data control** - You own and control all data\n\n**Best Practices:**\n- Never commit camera URLs or API tokens to git\n- Use strong passwords for network cameras\n- Enable API authentication in production\n- Regularly review and clean up old events\n- Follow local surveillance laws and regulations\n\nSee [docs/SECURITY.md](docs/SECURITY.md) for security policy and reporting vulnerabilities.\n\n## Contributing\n\nWe welcome contributions! Here's how you can help:\n\n- **Report bugs** - Open an issue with reproduction steps\n- **Request features** - Share your ideas in discussions\n- **Improve docs** - Fix typos, add examples, clarify instructions\n- **Write tests** - Increase test coverage\n- **Submit code** - Fix bugs or implement features\n\n**Getting Started:**\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes and add tests\n4. Run tests and linters (`poetry run pytest \u0026\u0026 poetry run pre-commit run --all-files`)\n5. Commit your changes (`git commit -m 'Add amazing feature'`)\n6. Push to your branch (`git push origin feature/amazing-feature`)\n7. Open a Pull Request\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.\n\n## License\n\nSecureVision is released under the **MIT License**. See [LICENSE](LICENSE) for details.\n\nYou are free to:\n- Use commercially\n- Modify and distribute\n- Use privately\n- Sublicense\n\nUnder the conditions of:\n- Include original license and copyright notice\n- No liability or warranty\n\n## Acknowledgments\n\nSecureVision is built with excellent open-source projects:\n\n- [InsightFace](https://github.com/deepinsight/insightface) - Face recognition models\n- [Ultralytics YOLOv8](https://github.com/ultralytics/ultralytics) - Object detection\n- [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) - Optical character recognition\n- [FastAPI](https://fastapi.tiangolo.com/) - Modern web framework\n- [PySide6](https://doc.qt.io/qtforpython/) - Qt bindings for Python\n- [OpenCV](https://opencv.org/) - Computer vision library\n- [Pydantic](https://pydantic.dev/) - Data validation\n\n## Support\n\n- **Documentation**: Check the [docs/](docs/) directory\n- **Issues**: [GitHub Issues](https://github.com/yourusername/cam-vision/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/yourusername/cam-vision/discussions)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelflppv%2Fcam-vision","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelflppv%2Fcam-vision","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelflppv%2Fcam-vision/lists"}