feat: use webcam
This commit is contained in:
parent
10e8eecd31
commit
f3fd7360c3
10
README.md
10
README.md
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Todo
|
## Todo
|
||||||
|
|
||||||
- [ ] Utiliser une webcam en entrée
|
- [x] Utiliser une webcam en entrée
|
||||||
- [x] Créer une interface avec tkinter
|
- [x] Créer une interface avec tkinter
|
||||||
- [x] Variabliser les tailles et couleurs via l'interface
|
- [x] Variabliser les tailles et couleurs via l'interface
|
||||||
|
|
||||||
@ -42,11 +42,11 @@ L'interface graphique **Yiking** permet de contrôler divers paramètres pour un
|
|||||||
|
|
||||||
#### 3. **param2**
|
#### 3. **param2**
|
||||||
- **Description** : Seuil pour le processus d'accumulation circulaire (HoughCircles).
|
- **Description** : Seuil pour le processus d'accumulation circulaire (HoughCircles).
|
||||||
- **Rôle** : Détermaxe la robustesse de la détection des cercles. Une valeur élevée garantit que seuls les cercles bien définis seront détectés.
|
- **Rôle** : Détermine la robustesse de la détection des cercles. Une valeur élevée garantit que seuls les cercles bien définis seront détectés.
|
||||||
- **Conseil** : Augmentez cette valeur pour réduire les faux positifs.
|
- **Conseil** : Augmentez cette valeur pour réduire les faux positifs.
|
||||||
|
|
||||||
#### 4. **maxRadius**
|
#### 4. **minRadius**
|
||||||
- **Description** : Rayon maximal des cercles détectés.
|
- **Description** : Rayon minimal des cercles détectés.
|
||||||
- **Rôle** : Filtre les cercles dont le rayon est inférieur à cette valeur.
|
- **Rôle** : Filtre les cercles dont le rayon est inférieur à cette valeur.
|
||||||
- **Conseil** : Utilisez une valeur basse si vous souhaitez détecter de petits cercles.
|
- **Conseil** : Utilisez une valeur basse si vous souhaitez détecter de petits cercles.
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ L'interface graphique **Yiking** permet de contrôler divers paramètres pour un
|
|||||||
- **Rôle** : Filtre les cercles dont le rayon dépasse cette valeur.
|
- **Rôle** : Filtre les cercles dont le rayon dépasse cette valeur.
|
||||||
- **Conseil** : Réglez cette valeur en fonction de la taille des cercles que vous recherchez.
|
- **Conseil** : Réglez cette valeur en fonction de la taille des cercles que vous recherchez.
|
||||||
|
|
||||||
#### 6. **color1_R_max, color1_V_max, color1_B_max, color1_R_max, color1_V_max, color1_B_max,**
|
#### 6. **color1_R_min, color1_R_max, color1_V_min, color1_V_max, color1_B_min, color1_B_max**
|
||||||
- **Description** : Couleur en (Rouge, Vert, Bleu) avec des valeurs minimales et maximales pour le filtrage par couleur.
|
- **Description** : Couleur en (Rouge, Vert, Bleu) avec des valeurs minimales et maximales pour le filtrage par couleur.
|
||||||
- **Rôle** : Définit un seuil bas et un seuil haut pour détecter uniquement les pixels correspondants à une certaine teinte.
|
- **Rôle** : Définit un seuil bas et un seuil haut pour détecter uniquement les pixels correspondants à une certaine teinte.
|
||||||
- **Conseil** : Ajustez ces valeurs pour isoler une couleur d'intérêt. Toute teinte en dehors de cette plage sera affectée à l'autre couleur.
|
- **Conseil** : Ajustez ces valeurs pour isoler une couleur d'intérêt. Toute teinte en dehors de cette plage sera affectée à l'autre couleur.
|
||||||
|
35
process.py
35
process.py
@ -13,6 +13,35 @@ dir_path = Path(".").absolute()
|
|||||||
TYPE_1 = "_________"
|
TYPE_1 = "_________"
|
||||||
TYPE_2 = "___ ___"
|
TYPE_2 = "___ ___"
|
||||||
|
|
||||||
|
import cv2
|
||||||
|
|
||||||
|
|
||||||
|
def capture_frame_from_webcam():
|
||||||
|
"""
|
||||||
|
Captures a single frame from the webcam.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
frame (numpy.ndarray): The captured frame as a NumPy array.
|
||||||
|
"""
|
||||||
|
# Open a connection to the default webcam (index 0)
|
||||||
|
cap = cv2.VideoCapture(0)
|
||||||
|
|
||||||
|
if not cap.isOpened():
|
||||||
|
raise Exception("Could not open webcam. Please check your webcam connection.")
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Capture a single frame
|
||||||
|
ret, frame = cap.read()
|
||||||
|
|
||||||
|
if not ret:
|
||||||
|
raise Exception("Failed to capture frame from webcam.")
|
||||||
|
|
||||||
|
return frame
|
||||||
|
finally:
|
||||||
|
# Release the webcam resource
|
||||||
|
cap.release()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Object:
|
class Object:
|
||||||
@ -48,8 +77,10 @@ def process_frame(params):
|
|||||||
)(params)
|
)(params)
|
||||||
|
|
||||||
# 1. Acquisition de l'image
|
# 1. Acquisition de l'image
|
||||||
src = dir_path.joinpath('tests/images/balls-full-small.jpg')
|
# src = dir_path.joinpath('tests/images/balls-full-small.jpg')
|
||||||
raw_image = cv2.imread(str(src))
|
# raw_image = cv2.imread(str(src))
|
||||||
|
|
||||||
|
raw_image = capture_frame_from_webcam()
|
||||||
|
|
||||||
# 2. Boxing des objets via opencv
|
# 2. Boxing des objets via opencv
|
||||||
gray = cv2.cvtColor(raw_image, cv2.COLOR_BGR2GRAY)
|
gray = cv2.cvtColor(raw_image, cv2.COLOR_BGR2GRAY)
|
||||||
|
Loading…
Reference in New Issue
Block a user