A comprehensive face detection library with multiple detection methods and advanced features
Project description
MyFaceDetect
A comprehensive Python library for face detection in images and real-time video streams using OpenCV Haar cascades and MediaPipe.
🌟 Features
Core Detection
- Multiple Detection Methods: OpenCV Haar cascades, MediaPipe, or both combined
- Static Image Detection: Process individual images with detailed results
- Real-time Video Detection: Live webcam detection with interactive controls
- Batch Processing: Efficiently process multiple images
- Face Extraction: Save individual face crops from images
Advanced Features
- Quality Analysis: Analyze image quality metrics affecting detection
- Benchmarking: Compare performance of different detection methods
- Result Export: Export results to JSON, CSV formats
- Visualization: Create annotated images showing detection results
- Configuration Management: Customizable detection parameters
- Comprehensive Logging: Detailed logging for debugging and monitoring
Enhanced Real-time Detection
- Interactive Controls: Switch methods, capture screenshots, toggle settings
- Performance Monitoring: Real-time FPS display
- Multiple Camera Support: Support for different camera indices
- Screenshot Capture: Save detections with customizable output directory
🚀 Quick Start
Installation
pip install myfacedetect
For development installation:
git clone https://github.com/yourusername/myfacedetect.git
cd myfacedetect
pip install -e .[dev]
Basic Usage
from myfacedetect import detect_faces, detect_faces_realtime
# Static image detection
faces = detect_faces("photo.jpg", method="mediapipe")
print(f"Found {len(faces)} faces")
for i, face in enumerate(faces):
print(f"Face {i+1}: {face}")
# Real-time detection
detect_faces_realtime(method="both", show_fps=True)
Advanced Usage
from myfacedetect import detect_faces, batch_detect_faces
from myfacedetect.utils import create_detection_report, visualize_detection_results
# Advanced detection with visualization
faces, annotated_image = detect_faces(
"photo.jpg",
method="both",
return_image=True,
scale_factor=1.05, # More sensitive detection
min_neighbors=3
)
# Create detailed report
report = create_detection_report(faces, "photo.jpg", "both", 0.123)
# Batch processing
image_paths = ["img1.jpg", "img2.jpg", "img3.jpg"]
all_results = batch_detect_faces(image_paths, method="mediapipe")
# Create visualization
visualization = visualize_detection_results(
"photo.jpg",
faces,
"mediapipe",
save_path="result.jpg"
)
📖 API Reference
Core Functions
detect_faces(image_path, method="mediapipe", **kwargs)
Detect faces in an image with comprehensive options.
Parameters:
image_path(str|Path|np.ndarray): Image file path or numpy arraymethod(str): Detection method - "haar", "mediapipe", or "both"return_image(bool): Return annotated image with resultsscale_factor(float): Haar cascade scale factor (default: 1.1)min_neighbors(int): Haar cascade min neighbors (default: 4)min_size(tuple): Minimum face size (width, height) in pixels
Returns:
- List of
FaceDetectionResultobjects - Optionally: tuple of (faces, annotated_image) if
return_image=True
detect_faces_realtime(camera_index=0, method="mediapipe", **kwargs)
Real-time face detection with interactive controls.
Parameters:
camera_index(int): Webcam index (default: 0)method(str): Detection method - "haar", "mediapipe", or "both"window_name(str): Display window nameshow_fps(bool): Display FPS countersave_detections(bool): Enable screenshot savingoutput_dir(str): Directory for saving screenshots
Interactive Controls:
ESC: Exit detectionCorSPACE: Capture screenshotS: Toggle screenshot savingF: Toggle FPS displayH: Switch to Haar cascade methodM: Switch to MediaPipe methodB: Switch to both methods
FaceDetectionResult Class
Represents a detected face with comprehensive information.
Properties:
bbox: Bounding box as (x, y, width, height)center: Center point as (x, y)confidence: Detection confidence score (0.0-1.0)x, y, width, height: Individual bbox components
Methods:
__repr__(): String representation with all details
Utility Functions
batch_detect_faces(image_paths, method="mediapipe", **kwargs)
Process multiple images efficiently.
save_face_crops(image_path, output_dir="face_crops", method="mediapipe")
Extract and save individual face crops.
benchmark_methods(image_paths, methods=["haar", "mediapipe"])
Compare performance of different detection methods.
create_detection_report(faces, image_path, method, execution_time)
Generate detailed analysis report.
visualize_detection_results(image_path, faces, method, save_path=None)
Create annotated visualization of results.
🛠️ Configuration
MyFaceDetect supports configuration files for customizing detection parameters:
from myfacedetect.config import config
# View current configuration
print(config.get("haar_cascade"))
# Modify parameters
config.set("mediapipe", "min_detection_confidence", 0.7)
# Save configuration
config.save_config()
Configuration file example (myfacedetect_config.json):
{
"haar_cascade": {
"scale_factor": 1.05,
"min_neighbors": 3,
"min_size": [20, 20]
},
"mediapipe": {
"min_detection_confidence": 0.7,
"model_selection": 0
}
}
🎮 Demo Script
Run the comprehensive demo:
# Interactive demo
python -m myfacedetect.demo
# Command line options
python -m myfacedetect.demo --image photo.jpg --method both
python -m myfacedetect.demo --realtime
python -m myfacedetect.demo --batch ./photos
python -m myfacedetect.demo --advanced photo.jpg
🔧 Development
Setup Development Environment
git clone https://github.com/yourusername/myfacedetect.git
cd myfacedetect
# Create virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # Linux/Mac
# Install in development mode
pip install -e .[dev]
Run Tests
pytest tests/ -v --cov=myfacedetect
Code Formatting
black myfacedetect/
isort myfacedetect/
flake8 myfacedetect/
📊 Performance Comparison
| Method | Speed | Accuracy | Resource Usage |
|---|---|---|---|
| Haar Cascade | Fast | Good | Low |
| MediaPipe | Medium | Excellent | Medium |
| Both Combined | Slower | Best | Higher |
🤝 Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- OpenCV team for the excellent computer vision library
- MediaPipe team for the powerful ML framework
- Contributors and users of this library
📚 Resources
Made with ❤️ by [Your Name]
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 myfacedetect-0.2.0.tar.gz.
File metadata
- Download URL: myfacedetect-0.2.0.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72f08f3c3518a2aea7eca79f854bf860c836877fefc31081cda077b22e6f402c
|
|
| MD5 |
ac3a4650bb5a506acf625258c178f3a3
|
|
| BLAKE2b-256 |
45656d762762d72f23bde48cab57b56886af6a06df7cca685641ccdfe2a24460
|
Provenance
The following attestation bundles were made for myfacedetect-0.2.0.tar.gz:
Publisher:
publish.yml on Santoshkrishna-code/myfacedetect
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
myfacedetect-0.2.0.tar.gz -
Subject digest:
72f08f3c3518a2aea7eca79f854bf860c836877fefc31081cda077b22e6f402c - Sigstore transparency entry: 434849191
- Sigstore integration time:
-
Permalink:
Santoshkrishna-code/myfacedetect@11032c4fa067661aaee5c931b4f494163b00dfb3 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Santoshkrishna-code
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@11032c4fa067661aaee5c931b4f494163b00dfb3 -
Trigger Event:
release
-
Statement type:
File details
Details for the file myfacedetect-0.2.0-py3-none-any.whl.
File metadata
- Download URL: myfacedetect-0.2.0-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5f2eeea3fba13f06839e97fa5a854f8026f332b4db79b78c5190c554fc87e2a
|
|
| MD5 |
0b5944ad7cf2cdf80b15ec2e4bb06a7f
|
|
| BLAKE2b-256 |
63238e3dd04933414e81fb11fd7da7f986ace67a03357eefc8b63d7f16eecb8e
|
Provenance
The following attestation bundles were made for myfacedetect-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on Santoshkrishna-code/myfacedetect
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
myfacedetect-0.2.0-py3-none-any.whl -
Subject digest:
b5f2eeea3fba13f06839e97fa5a854f8026f332b4db79b78c5190c554fc87e2a - Sigstore transparency entry: 434849230
- Sigstore integration time:
-
Permalink:
Santoshkrishna-code/myfacedetect@11032c4fa067661aaee5c931b4f494163b00dfb3 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Santoshkrishna-code
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@11032c4fa067661aaee5c931b4f494163b00dfb3 -
Trigger Event:
release
-
Statement type: