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
ping 10.6.15.115
Si la carte répond, sy 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: <file sh rpi.sh> #!/bin/bash slogin -Y meteo@10.6.15.115 </file
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