IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Détecter un feux tricolore


Sujet :

Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 19
    Par défaut Détecter un feux tricolore
    Bonjour,

    Dans le cadre d'un projet de fin d'année, je dois réaliser une voiture miniature autonome. Cela fait plusieurs jours que je bloque sur la détection de feux tricolores. Suivant la luminosité ambiante, les valeurs HSV de mon feux tricolore changent. J'aimerais donc savoir si il est possible de faire en sorte que peu importe l'endroit ou l'on se situe, les valeurs HSV restent fixes. Mon deuxième problème est que je n'arrive pas à détecter seulement mon feux.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    import numpy as np
    import cv2
    def nothing (x):
       pass
     
     
    cap = cv2.VideoCapture(0)
    cv2.namedWindow("Trackbars")
     
     
    cap.set(3,320)
    cap.set(4,240)
    #print (cap.get(5))
     
     
    cv2.createTrackbar("L - H","Trackbars",0,255,nothing)
    cv2.createTrackbar("L - S","Trackbars",0,255,nothing)
    cv2.createTrackbar("L - V","Trackbars",0,255,nothing)
    cv2.createTrackbar("U - H","Trackbars",0,255,nothing)
    cv2.createTrackbar("U - S","Trackbars",0,255,nothing)
    cv2.createTrackbar("U - V","Trackbars",0,255,nothing)
     
    while True:
     
     
        _, frame = cap.read()
     
        blurred = cv2.GaussianBlur(frame, (11, 11), 0)
        hsv = cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)
     
     
        l_h = cv2.getTrackbarPos("L - H","Trackbars")          
        l_s = cv2.getTrackbarPos("L - S","Trackbars")          
        l_v = cv2.getTrackbarPos("L - V","Trackbars")         
        u_h = cv2.getTrackbarPos("U - H","Trackbars")         
        u_s = cv2.getTrackbarPos("U - S","Trackbars")          
        u_v = cv2.getTrackbarPos("U - V","Trackbars")
     
     
     
        lower = {'red':(1, 220, 163), 'yellow':(l_h, l_s, l_v), 'green':(l_h, l_s, l_v)} #assign new item
        upper = {'red':(60, 255, 255), 'yellow':(u_h,u_s,u_v), 'green':(u_h,u_s,u_v)}
     
        # define standard colors for circle around the object
        colors = {'red':(0,0,255), 'yellow':(0, 255, 217), 'green':(0,255,0)}
     
        #for each color in dictionary check object in frame
        for key, value in upper.items():
            # construct a mask for the color from dictionary`1, then perform
            # a series of dilations and erosions to remove any small
            # blobs left in the mask
            kernel = np.ones((9,9),np.uint8)
            mask = cv2.inRange(hsv, lower[key], upper[key])
            mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
            mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
     
            # find contours in the mask and initialize the current
            # (x, y) center of the ball
            cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2]
            center = None
     
            # only proceed if at least one contour was found
            #print(len(cnts))
            if len(cnts) > 0:
                # find the largest contour in the mask, then use
                # it to compute the minimum enclosing circle and
                # centroid
                c = max(cnts, key=cv2.contourArea)
                ((x, y), radius) = cv2.minEnclosingCircle(c)
                M = cv2.moments(c)
                cX = int(M["m10"] / M["m00"])
                cY = int(M["m01"] / M["m00"])
     
                # only proceed if the radius meets a minimum size. Correct this value for your object's size
                #print radius     
                if (radius > 0.5):
                    # draw the circle and centroid on the frame,
                    # then update the list of tracked points
                    cv2.circle(frame, (int(x), int(y)), int(radius), colors[key], 2)
                    cv2.putText(frame,key + " light", (cX+40, cY), cv2.FONT_HERSHEY_SIMPLEX, 0.6,colors[key],2)
     
     
        # show the frame to our screen
        cv2.imshow("Frame", frame)
        cv2.imshow("Mask", mask)
     
        key = cv2.waitKey(1) & 0xFF
        # if the 'q' key is pressed, stop the loop
        if key == ord("q"):
            break
     
    # cleanup the camera and close any open windows
    camera.release()
    cv2.destroyAllWindows()
    Images attachées Images attachées   

Discussions similaires

  1. projet feux tricolores
    Par bajoi11 dans le forum C
    Réponses: 3
    Dernier message: 22/03/2012, 15h38
  2. Gestion de feux tricolores avec un PIC 16F877A
    Par mdh12 dans le forum Débuter
    Réponses: 3
    Dernier message: 21/05/2010, 11h48
  3. régulation des feux tricolores de circulation
    Par azramiya dans le forum Automation
    Réponses: 0
    Dernier message: 13/04/2010, 19h38
  4. commande de feux tricolores de carrefours sous labview
    Par aloumds dans le forum LabVIEW
    Réponses: 1
    Dernier message: 07/12/2009, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo