Ceci est une ancienne révision du document !
Table des matières
Matériel et logiciel utilisés
Nous allons utiliser une carte raspberry Pi à laquelle un module caméra et une carte d'extension SenseHat on été ajoutées.
Les logiciels utilisés sont une distribution Linux Raspbian à laquelle les paquets suivants ont été ajoutés:
sudo apt-get update && sudo apt-get upgrade sudo apt-get install python3-opencv libjasper-dev libqtgui4 libqt4-test libtiff5 libgstreamer1.0-0 libqtcore4 libopenexr23 libatlas3-base libsz2 build-essential cmake pkg-config libjpeg-dev libtiff5-dev libjasper-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libfontconfig1-dev libcairo2-dev libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran libhdf5-dev libhdf5-serial-dev libhdf5-103 libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 python3-dev nano python3-pyqt4 screen imagemagick gitk iotop lsof geeqie
Les paquets python suivants on égalements été installés:
sudo python3 -m pip install imutils sudo python3 -m pip install opencv-python sudo python3 -m pip install matplotlib sudo python3 -m pip install rubik_solver sudo python3 -m pip install picamera[array]
Manip
Nous allons commencer par prendre en main la librairie OpenCV via le langage Python: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html
Nous utiliserons l'environnement idle3 pour développer et tester.
Chargement et sauvegarde d'images
- test1.py
#!/usr/bin/python3 import numpy as np import cv2 import math def afficherCercle(cu,cv,r,nbpoints,image): for i in range(0,nbpoints): angle=2*3.14*i/nbpoints #print(angle) u=int(cu+r*math.cos(angle)) v=int(cv+r*math.sin(angle)) img[v][u]=0 print('salut') a=65 b=a+9 print(b) #chargement d'une image non présente sur le disque img = cv2.imread('messi5.jpg',0) print(str(img)) #img vaut None img = cv2.imread('robot.jpeg',0) print(str(img)) #img vaut None img[60][500]=0 v=60 for u in range(10,200): img[v][u]=0 u=60 for v in range(10,200): img[v][u]=0 u=80 for v in range(10,200,2): img[v][u]=0 for r in range(10,100,10): afficherCercle(200+r,300,r,500,img) cv2.imwrite('robot_cercle.jpeg',img) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()
pour rendre le programme exécutable depuis le terminal
chmod a+x test.py
Utilisation en réseau
Relever l'adresse IP de la carte raspberry pi, ouvrir un terminal et saisir:
ip addr ls |grep inet |grep eth0
Relever l'adresse IPV4 fournie:
inet 10.6.15.115/24 brd 10.6.15.255 scope global eth0
Depuis le PC étudiant, vérifier si la raspberry pi est joignable (CTRL+C pour quitter la commande)
ping 10.6.15.115
Si la carte répond, s'y connecter en Secure SHell avec export de l'affichage:
slogin -Y meteo@10.6.15.115
Puis utiliser le terminal pour faire ce que vous voulez
#!/bin/bash slogin -Y meteo@10.6.15.115
Faire un programme sur le PC pour automatiser la connexion au raspberry pi:
- rpi.sh
#!/bin/bash slogin -Y meteo@10.6.15.115
Rendre le script exécutable:
chmod +x rpi.sh
Pour l'exécuter:
./rpi.sh
Même principe pour rendre exécutable un programme python3, en ajoutant au début du programme python:
#!/usr/bin/env python3
Pour éditer les programmes sur la raspberry pi:
idle3 nomduprogrammepython.py