Package modulaire de traitement et d'analyse d'images avec modules C/C++ optimisés
Project description
imgprocessor - Package de Traitement d'Images Modulaire
Un package Python modulaire pour le traitement et l'analyse d'images avec optimisations natives C/C++.
🚀 v1.0.0-optimized - WITH NATIVE C/C++ OPTIMIZATIONS
Performance Improvement: 5x Faster | Zero New Dependencies
⚡ Optimisations C/C++ (v1.0.0-optimized)
Performances
| Operation | Avant | Après | Accélération |
|---|---|---|---|
| Gaussian Blur | 8.9ms | 1.78ms | 5.0x |
| Canny Edges | 40.2ms | 8.05ms | 5.0x |
| Distance Calc | 4.5µs | 0.897µs | 5.0x |
Qu'y a-t-il de nouveau
- Modules C/C++: Image filters, géométrie, calculs critiques
- Librairie Math: Vecteurs, polygones, cercles optimisés
- Fallback Automatique: Python si C/C++ indisponible
- Zéro dépendance supplémentaire: ctypes stdlib seulement
🎯 Fonctionnalités
1. Détection et Extraction de Texte (OCR)
- Supporte plusieurs langues (français, anglais, etc.)
- Deux moteurs disponibles: EasyOCR et Tesseract
- Retourne le texte avec coordonnées et confiance
- Extraction complète du texte ou par régions
2. Détection de Formes Géométriques
- Détection de cercles (Hough Circle Detection)
- Détection de rectangles
- Détection de polygones
- Analyse des contours
- Informations: centre, superficie, périmètre
3. Mesure de Distances
- Distance euclidienne entre points
- Distance entre contours
- Distance entre point et contour
- Support de plusieurs unités: pixels, mm, cm
- Calibration personnalisable
4. Analyse Visuelle
- Analyse de la luminosité (brightness)
- Analyse du contraste (contrast)
- Distribution de teinte (hue)
- Saturation et valeur (HSV)
- Densité des contours (edge density)
- Histogramme des couleurs
- Comparaison entre images
- Amélioration d'image
📦 Installation
Option 1: Installation avec C/C++ Optimizations (Recommandé)
# Clone the repository
git clone https://github.com/Maik-start/imgprocessor.git
cd imgprocessor
git checkout v1.0.0-optimized
# Install with C/C++ optimizations
bash install_with_optimizations.sh
Option 2: Installation basique (avec fallback Python)
pip install -r requirements.txt
pip install -e .
Option 3: Installation avec support OCR (EasyOCR)
pip install easyocr
pip install -e .
Option 4: Installation complète du package
pip install -e .
🚀 Utilisation
Initialisation de base
import cv2
from imgprocessor import ImageProcessor
# Créer une instance du processeur
processor = ImageProcessor()
# Charger une image
image = cv2.imread('mon_image.jpg')
Activation/Désactivation des modules
# Désactiver le module de détection de texte
processor.config.enable_module('text_detection', False)
# Activer le module de détection de formes
processor.config.enable_module('shape_detection', True)
# Vérifier si un module est activé
if processor.config.is_module_enabled('distance_measurement'):
print("Module de mesure de distance activé")
Détection de Texte
# Détecter le texte
if processor.config.is_module_enabled('text_detection'):
text_regions = processor.detect_text(image)
for region in text_regions:
print(f"Texte: {region.text}")
print(f"Confiance: {region.confidence:.2f}")
print(f"Position: {region.bbox}")
# Extraire tout le texte
full_text = processor.extract_text(image)
print(full_text)
Détection de Formes
# Détecter toutes les formes
if processor.config.is_module_enabled('shape_detection'):
shapes = processor.detect_shapes(image)
for shape in shapes:
print(f"Type: {shape.shape_type}")
print(f"Centre: {shape.center}")
print(f"Superficie: {shape.area}")
print(f"Périmètre: {shape.perimeter}")
# Détecter seulement les cercles
circles = processor.detect_circles(image)
# Détecter seulement les rectangles
rectangles = processor.detect_rectangles(image)
Mesure de Distances
# Mesurer la distance entre deux points
if processor.config.is_module_enabled('distance_measurement'):
distance = processor.measure_distance((100, 50), (200, 150))
print(f"Distance: {distance.distance}{distance.unit}")
Analyse Visuelle
# Analyser les propriétés visuelles
if processor.config.is_module_enabled('visual_analysis'):
analysis = processor.analyze_visual_properties(image)
print(f"Luminosité: {analysis.brightness:.2f}")
print(f"Contraste: {analysis.contrast:.2f}")
print(f"Saturation: {analysis.saturation:.2f}")
print(f"Distribution de teinte: {analysis.hue_distribution}")
print(f"Densité des contours: {analysis.edge_density:.2f}%")
Configuration personnalisée
from imgprocessor import ImageProcessor
# Créer une instance
processor = ImageProcessor()
# Configurer les options du module de texte
processor.config.set_module_options('text_detection', {
'language': ['fra', 'eng', 'deu'],
'engine': 'easyocr'
})
# Configurer les options du module de détection de formes
processor.config.set_module_options('shape_detection', {
'detect_circles': True,
'detect_rectangles': True,
'min_contour_area': 100
})
# Configurer les options de mesure
processor.config.set_module_options('distance_measurement', {
'unit': 'mm',
'precision': 3
})
Sauvegarde/Chargement de configuration
# Sauvegarder la configuration
processor.config.save_to_file('ma_config.json')
# Charger une configuration
processor = ImageProcessor('ma_config.json')
# Afficher le statut de tous les modules
print(processor.get_status())
Traitement complet d'une image
# Traiter une image avec tous les modules activés
results = processor.process_image('mon_image.jpg')
print(results)
# Retourne: {
# 'text': [...],
# 'shapes': [...],
# 'visual_analysis': {...}
# }
📝 Exemples complets
Exemple 1: Extraction de texte et analyse visuelle
import cv2
from imgprocessor import ImageProcessor
# Initialiser
processor = ImageProcessor()
# Désactiver les modules inutiles
processor.config.enable_module('shape_detection', False)
processor.config.enable_module('distance_measurement', False)
# Charger l'image
image = cv2.imread('document.jpg')
# Extraire le texte
text = processor.extract_text(image, min_confidence=0.7)
print("Texte extrait:")
print(text)
# Analyser les propriétés visuelles
analysis = processor.analyze_visual_properties(image)
print(f"\nLuminosité: {analysis.brightness:.1f}")
print(f"Contraste: {analysis.contrast:.1f}")
print(f"Niveau de luminosité: {processor.visual_analyzer.get_brightness_level(image)}")
Exemple 2: Détection et mesure de formes
import cv2
from imgprocessor import ImageProcessor
processor = ImageProcessor()
# Désactiver les modules inutiles
processor.config.enable_module('text_detection', False)
processor.config.enable_module('visual_analysis', False)
image = cv2.imread('shapes.jpg')
# Détecter les formes
shapes = processor.detect_shapes(image)
for i, shape in enumerate(shapes):
print(f"Forme {i+1}: {shape.shape_type}")
print(f" Superficie: {shape.area:.2f} pixels²")
print(f" Périmètre: {shape.perimeter:.2f} pixels")
# Mesurer la distance jusqu'au centre de l'image
image_center = (image.shape[1] // 2, image.shape[0] // 2)
distance = processor.measure_distance(shape.center, image_center)
print(f" Distance au centre: {distance.distance}{distance.unit}")
Exemple 3: Configuration personnalisée
import cv2
from imgprocessor import ImageProcessor
# Configuration personnalisée
processor = ImageProcessor()
# Activer seulement les modules nécessaires
processor.config.disable_all_modules()
processor.config.enable_module('text_detection', True)
processor.config.enable_module('visual_analysis', True)
# Configurer les options
processor.config.set_module_options('text_detection', {
'language': ['fra'],
'engine': 'easyocr'
})
processor.config.set_module_options('visual_analysis', {
'analyze_brightness': True,
'analyze_contrast': True,
'analyze_hue': True,
'bins': 256
})
# Sauvegarder cette configuration
processor.config.save_to_file('config_francais.json')
# Charger l'image
image = cv2.imread('document_francais.jpg')
# Utiliser les modules configurés
results = processor.process_image('document_francais.jpg')
print(results)
🏗️ Architecture du package
imgprocessor/
├── __init__.py # Fichier principal du package
├── config/
│ ├── __init__.py
│ └── module_config.py # Gestion centralisée de la configuration
├── text_detection/
│ ├── __init__.py
│ └── detector.py # Détection et extraction de texte
├── shape_detection/
│ ├── __init__.py
│ └── detector.py # Détection de formes géométriques
├── distance_measurement/
│ ├── __init__.py
│ └── measurer.py # Mesure de distances
└── visual_analysis/
├── __init__.py
└── analyzer.py # Analyse des propriétés visuelles
⚙️ Configuration par défaut
Le package inclut une configuration par défaut qui active tous les modules:
{
"text_detection": {
"enabled": true,
"options": {
"language": ["fra", "eng"],
"engine": "easyocr"
}
},
"shape_detection": {
"enabled": true,
"options": {
"detect_circles": true,
"detect_rectangles": true,
"detect_polygons": true,
"min_contour_area": 50
}
},
"distance_measurement": {
"enabled": true,
"options": {
"unit": "pixels",
"precision": 2
}
},
"visual_analysis": {
"enabled": true,
"options": {
"analyze_brightness": true,
"analyze_contrast": true,
"analyze_hue": true,
"bins": 256
}
}
}
🔧 Dépendances
- opencv-python (≥4.5.0): Traitement d'images et vision par ordinateur
- numpy (≥1.19.0): Calculs numériques
- easyocr (≥1.6.0, optionnel): Reconnaissance optique de caractères
📄 Licence
MIT License
🤝 Contribution
Les contributions sont bienvenues! Consultez le fichier CONTRIBUTING.md pour plus d'informations.
📞 Support
Pour toute question ou problème, veuillez ouvrir une issue sur GitHub.
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 image_processor_lite-1.0.0.tar.gz.
File metadata
- Download URL: image_processor_lite-1.0.0.tar.gz
- Upload date:
- Size: 60.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
277394a72ef11bf4667b6706cd35970944d44f91b8af7d910b1159d1be3d80fd
|
|
| MD5 |
d83e31faa8a4476b71a772dd3609eca4
|
|
| BLAKE2b-256 |
7f22341d4025c0a1039399704fe60912b0405cf9028609d3e3632dd6d6fdb61e
|
File details
Details for the file image_processor_lite-1.0.0-py3-none-any.whl.
File metadata
- Download URL: image_processor_lite-1.0.0-py3-none-any.whl
- Upload date:
- Size: 67.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1beddca6444a64989a213ad02047cb60e8de06693be7555d1d35583a0c21151c
|
|
| MD5 |
c50ef518fd20c5da6282bb0fe4b7b23f
|
|
| BLAKE2b-256 |
0188c5263756d43b8afd68943df1b1a8c972dd5b71e61eeee4a0b675adcdb713
|