Problème pour demarrer un code avec Python

OUAAAH! Grand luxe d’explications, qui mériterait sa place dans un tuto pour débutants, plutôt que dans un (relativement) obcur blog de spécialistes. Merci aussi pour la piqure de rappel linux.

@Cavok: python, c’est comme le vélo, tu te casses un peu la figure au début, mais ça vaut le coup de perséverer. Et ça consomme moins d’essence que java.

Merci à tous pour vos retours sur virtualenv

Bonsoir,
Grace à vos conseils, j’ai pu écrire le code .Merci
j’ai donc le code écris dans le terminal, et je ne sais pas quoi faire pour le faire exécuter …afin que la webcam marche, je ne trouve rien du style ‘RUN’ ou autre pour le lancer …
Si j’appuie sur ‘entrée’ , il y a un texte qui défile, puis ensuite je ne trouve pas de moyen pour l’effacer …
comment puis-je faire ?
Bonne soirée à vous tous

(pièces jointes)

Le texte qui défile c’est justement le programme qui s’exécute.

il ne faut pas l’écrire dans le terminal. il faut l’écrire dans un editeur.

viens nous voir sur discord

L’interpréteur interactif est suffisant pour exécuter un programme vite fait, pas forcément besoin d’un éditeur (mais ce n’est pas très pratique car c’est du one-shot).

Et discord n’est pas nécessaire pour résoudre les problèmes, ce forum me paraît bien plus adapté : c’est structuré et les réponses pourront servir à d’autres personnes puisqu’indexées par les moteurs de recherche.

oui bof…

L’interpréteur c’est bien pour assayer des commandes dès que ça dépasse quelques lignes c’est pas du tout pratique.

Et le forum c’est super lent comme interaction.

Bonjour,
J’avance…
un autre soucis : pourquoi il est marqué " impossible de capturer l’image"
Bien sur c’est parce que on est dans le cas de la ligne 6 : " if not ret "
mais pourquoi c’est : " if not ret " ,pourtant la webcam montre une image sur l’ordi

Merci d’avance pour vos réponses
ps j’ai du refaire le message ,car j’avais mis 2 pièces jointes ,et a cause de cela,il y a eu une erreur lors de l’envoi)
donc j’ai capturé les 2 image ensemble

Bonjour,
J’avance…
un autre soucis : pourquoi il est marqué " impossible de capturer l’image"
Bien sur c’est parce que on est dans le cas de la ligne 6 : " if not ret "
mais pourquoi c’est : " if not ret " ,pourtant la webcam montre une image sur l’ordi (pièce jointe 2)
Merci d’avance pour vos réponses

(pièces jointes)

Si tu dis que la webcam montre une image sur l’ordi, c’est peut-être justement qu’elle est occupée par un autre processus et que ton programme Python ne peut pas y accéder. Ou peut-être un problème de permissions.
Il faudrait regarder plus précisément la valeur de retour du cap.read et voir si des informations de debug sont transmises.

Merci pour ton soutien ,
Voici ce que j’obtiens en utilisant 'debug python file
j’ai rajouté ligne 6

print(cap.isOpened())

pour voir , et ça donne en réponse true puis aussitôt false
pourquoi ?

(pièces jointes)

revoici le programme actuel :

import cv2
import numpy as np

cap = cv2.VideoCapture(0)
while True:
  print(cap.isOpened())
  ret, frame = cap.read()
    if not ret:
      print("Impossible de capturer l'image")
      break
  hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
  lower_yellow = np.array([20, 100, 100]) # Min : Hue = 20, Saturation = 100, Value = 100
  upper_yellow = np.array([30, 255, 255]) # Max : Hue = 30, Saturation = 255, Value = 255
  mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
  result = cv2.bitwise_and(frame, frame, mask=mask)
  contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
  if contours:
    largest_contour = max(contours, key=cv2.contourArea)
    M = cv2.moments(largest_contour)
    if M["m00"] != 0:
    cX = int(M["m10"] / M["m00"])
    cY = int(M["m01"] / M["m00"])
    cv2.circle(frame, (cX, cY), 10, (0, 255, 0), -1)
    cv2.putText(frame, f"({cX}, {cY})", (cX + 10, cY - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
    if cX < 200:
      print("tourner à gauche")
    elif cX > 400:
      print("tourner à droite")
    cv2.imshow("Frame", frame)
    cv2.imshow("Mask", mask)
    cv2.imshow("Result", result)
  if cv2.waitKey(1) & 0xFF == ord('q'):
    break
    cap.release()
cv2.destroyAllWindows()

et voici le debbugage :frowning: à noter que l’image de la webcam apparait une fraction de seconde pendant que le programme tourne )

PS C:\Users\JEAN> & ‘c:\Users\JEAN\AppData\Local\Programs\Python\Python313\python.exe’ ‘c:\Users\JEAN.vscode\extensions\ms-python.debugpy-2025.0.1-win32-x64\bundled\libs\debugpy\launcher’ ‘51971’ ‘–’ ‘c:\Users\JEAN\jean.py’
True
False
Impossible de capturer l’image
PS C:\Users\JEAN> ^C
PS C:\Users\JEAN>
PS C:\Users\JEAN> c:; cd ‘c:\Users\JEAN’; & ‘c:\Users\JEAN\AppData\Local\Programs\Python\Python313\python.exe’ ‘c:\Users\JEAN.vscode\extensions\ms-python.debugpy-2025.0.1-win32-x64\bundled\libs\debugpy\launcher’ ‘52003’ ‘–’ ‘C:\Users\JEAN\jean.py’
True
False
Impossible de capturer l’image
PS C:\Users\JEAN> ^C
PS C:\Users\JEAN>
PS C:\Users\JEAN> c:; cd ‘c:\Users\JEAN’; & ‘c:\Users\JEAN\AppData\Local\Programs\Python\Python313\python.exe’ ‘c:\Users\JEAN.vscode\extensions\ms-python.debugpy-2025.0.1-win32-x64\bundled\libs\debugpy\launcher’ ‘52030’ ‘–’ ‘C:\Users\JEAN\jean.py’

Merci pour ton soutien ,
Voici ce que j’obtiens en utilisant 'debug python file
j’ai rajouté ligne 6

print(cap.isOpened())

pour voir , et ça donne en réponse true puis aussitôt false
pourquoi ?

EDIT Admin pour mise en forme (en espérant que je ne me suis pas trompé)

Difficile de comprendre le code sans l’indentation et la mise en forme, mais si le programme affiche l’image puis se coupe parce que le périphérique est fermé, c’est probablement qu’une opération dans ta boucle cause sa fermeture.
Peut-être l’appel à cap.release() s’il est imbriqué dans la boucle ?

Bonjour entwanne,
je te remercie , car ta remarque est judicieuse,et en suivant ton conseil…ça marche tout à fait comme je veux!Emoji
Je te souhaite une bonne journée

1 « J'aime »

Je me suis permis d’éditer ton message pour indenter le code source. J’espère ne pas m’être trop trompé sur les indentations.

Bonjour,
autre petit problème pour la couleur a détecter :
par exemple pour le vert j’ai trouvé :

def green_hsv():
    lower_hsv = np.array([40, 150, 20])
    higher_hsv = np.array([70, 255, 255])

pour le jaune : (facile,c’était donné…)

  lower_yellow = np.array([20, 100, 100]) # Min : Hue = 20, Saturation = 100, Value = 100
  upper_yellow = np.array([30, 255, 255]) # Max : Hue = 30, Saturation = 255, Value = 255

mais je voudrai pour la couleur ‘violet’, je galère …impossible de trouver la solution
quelqu’un pourrait-il me dire
merci

Je ne pense pas que la réponse soit évidente.
Peut-être que tu devrais regarder une roue chromatique pour voir selon toi, quelles sont les valeurs minimales/maximales de teinte, saturation et valeur pour considérer que la couleur est du violet.
Tu peux t’inspirer des couleurs présentées sur cette page.

Merci, cela m’a permis de résoudre mon problème.
c’est sympa :grinning: