9. Contrôle du MarsCamBot et reconnaissance d’images avec Python¶
Objectif: Faire déplacer le MarsCamBot avec Python.
Âge |
14 à 18 ans |
Notions abordées |
Robotique, programmation avec Python, condition, boucle. |
Durée |
4 heures |
Dispositif pédagogiques |
Par groupe de 2 |
Matériel |
Un MarsCambot, Un laptop/tablette par groupe de 2, avec connexion à Internet |
Prérequis |
1. Connaissances de bases de Python (voir Activité 2 - Reconnaissance d’images avec Python) |
9.1. Reconnaissance d’image¶
# Necessary import
import cv2 # cv2 is used to take image from the camera
import myfunctions # myfunctions helps for taking picture and making predictions
import matplotlib.pyplot as plt # matplotlib is used to deal with images
from PIL import Image # PIL is used to deal with images
import time # time is used for making the computer wait
# Get camera object
camera_object = cv2.VideoCapture(0)
camera_object.set(cv2.CAP_PROP_BUFFERSIZE, 3)
# Initialize model
interpreter = myfunctions.initialize_model(model_path='model.tflite')
# Infinite loop
while True:
# Wait for one second
time.sleep(1)
# Take image from the camera
picture_rgb = myfunctions.take_picture(camera_object)
# Predict image class
prediction, probability = myfunctions.model_prediction(interpreter, picture_rgb)
# If prediction is class 0, class is 'Tube'
if prediction == 0:
print("Je reconnais la classe 'Tube'")
# If prediction is class 1, class is 'Autre'
if prediction == 1:
print("Je reconnais la classe 'Other'")
# If prediction is class 2, class is 'Bord'
if prediction == 2:
print("Je reconnais la classe 'Bord'")
Je reconnais la classe 'Other'
Je reconnais la classe 'Other'
Je reconnais la classe 'Forward'
Je reconnais la classe 'Forward'
Je reconnais la classe 'Other'
Je reconnais la classe 'Other'
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
/var/folders/2y/mv3z1v0945b60_l2bzjwpzj80000gn/T/ipykernel_83580/618073387.py in <module>
23
24 # Take image from the camera
---> 25 picture_rgb = myfunctions.take_picture(camera_object)
26
27 # Predict image class
~/Projects/Scientotheque/fiches-ia/ai-rover-fr/03_Image_Recognition_Python/myfunctions.py in take_picture(camera_object, input_image_size)
9 def take_picture(camera_object, input_image_size=(224,224)):
10
---> 11 return_status, picture = camera_object.read()
12
13 picture_rgb = cv2.cvtColor(picture, cv2.COLOR_BGR2RGB)
KeyboardInterrupt:
# Release camera
camera_object.release()
9.2. Contrôle le rover avec la reconnaissance d’image¶
# Necessary import
import cv2 # cv2 is used to take image from the camera
import myfunctions # myfunctions helps for taking picture and making predictions
import matplotlib.pyplot as plt # matplotlib is used to deal with images
from PIL import Image # PIL is used to deal with images
import time # time is used for making the computer wait
# Get camera object
camera_object = cv2.VideoCapture(0)
camera_object.set(cv2.CAP_PROP_BUFFERSIZE, 3)
# Initialize model
interpreter = myfunctions.initialize_model(model_path='model.tflite')
# Infinite loop
while True:
# Wait for one second
time.sleep(1)
# Take image from the camera
picture_rgb = myfunctions.take_picture(camera_object)
# Predict image class
prediction, probability = myfunctions.model_prediction(interpreter, picture_rgb)
# If prediction is class 0, class is 'Tube'
if prediction == 0:
print("Je reconnais la classe 'Tube'")
# If prediction is class 1, class is 'Autre'
if prediction == 1:
print("Je reconnais la classe 'Other'")
# If prediction is class 2, class is 'Bord'
if prediction == 2:
print("Je reconnais la classe 'Bord'")
# Release camera
camera_object.release()
9.3. Aller plus loin¶
Ajoute des classes avec des images de flèches vers la droite ou la gauche pour faire tourner la tortue à droite ou à gauche
Fais un classificateur qui utilise l’image de tube sur sol martien, et pour faire avancer la tortue si aucun tube n’est détecté, et fais s’arrêter la tortue lorsqu’un tube est détecté
9.4. Ressources utiles¶
Documentation pour la tortue Python: https://docs.python.org/fr/3/library/turtle.html
9.5. Notes sur les objectifs pédagogiques¶
Référentiel FMTTN:
Lire un algorithme simple
Écrire un algorithme simple
Lire un programme simple
Écrire un programme simple
Identifier des éléments relatifs à la programmation et aux logigrammes.|