
Posted On: août 7, 2020
Seen by: 9348
Categories: OPENCV
Author: Christian Joseph
Tags: opencv , raspberry pi , python , reconnaissance faciale , caméra pi
Il était une fois le roi Raspberry Pi 4 qui avait succédé à son père le roi raspberry Pi 3, lequel avait succédé à son père Raspberry Pi 2, lequel avait succédé à son père Raspberry Pi 1er du Nom. Il avait une fille prénommée OpenCV4 et qui était la plus belle du royaume. Elle surpassait de loin toutes ses rivales au point où le Duc Python rompit ses fiancailles avec la duchesse SimpleCV, tant il était épris d’amour pour la princesse OpenCV4…
OpenCV est une librairie graphique dévellopée par Intel et destinée au traitement de l'image en temps réel, et est utilisable avec des OS comme Linux, Windows, ou Mac.
Avec OpenCV, on peut faire du redimensionnement d’image, de la modification de filtres, de l’incrustation vidéo de textes et de formes, de la reconnaissance d’objets, de couleurs, de la détection et de la reconnaissance faciale, et bien d’autres choses encore.
Bref OpenCV est l’outil indispensable pour s’initier à l’Intelligence Artificielle…Pas étonnant que le Duc Python et le Compte C++ se livrent une guerre sans merci pour ses beaux attributs.
Un jour, la princesse OpenCV4 fut prisonnière du terrible Dragon Internet.
De nombreux preux tutoriels essayèrent de l’en délivrer afin de la ramener près de son père le roi Raspberry Pi 4, mais ils échouèrent à cause de leurs équipements obsolètes ou incomplets pour la plupart.
Ce fut après un âpre combat avec le dragon que nous réussîmes à ramener la princesse OpenCV4 à son père, et le roi Raspberry Pi 4 l’installa bien au chaud dans l’un de ses 3 châteaux Carte micro SD Raspbian-OpenCV 16Go, 32Go, et 64Go.
Un matin, le Duc Python se présenta au château Carte Micro-SD 32Go afin de demander la main de la princesse OpenCV4 au Roi Raspberry Pi 4, et voici comment il promit de traiter la princesse :
« Majesté ! » Commença le Duc, « Si vous consentez à me donner la main de votre fille, je pourrais emprunter la caméra royale afin d’emmener la princesse à un voyage des plus plaisants ! Voici notre programme, mais cependant, attention aux (antislash) qui sont à remplacer par leur symbole!(car non gérés par l'éditeur Blog, sorry!): »
#www.eagle-robotics.com
#importation de la librairie opencv 4.0.0
import cv2
#importation du système d'exploitation
import sys
#importation de l'horloge du système
import time
#importation de la librairie de gestion de camera par python
import picamera
#création de l'objet permettant de gérer la caméra
camera = picamera.PiCamera()
#création du nom de l'image enregistrer par la caméra
imagePath = r'image0.jpg'
#si on ne rencontre pas d'erreur
try:
#on lance une capture vidéo de la caméra
camera.start_preview()
#on attend 5 seconde
time.sleep(5)
#on enregistre une image
camera.capture(imagePath)
#on récupère le chemin des fichier xml d'apprentissage des réseau de neurones
dirCascadeFiles = r'/home/pi/opencv/data/haarcascades_cuda/'
#on récupère le fichier d'apprentissage par défaut des neurones pour une détection de présence de visage
cascadefile= dirCascadeFiles + "haarcascade_frontalface_default.xml"
#on définis que l'on prend cette apprentissage
classCascade = cv2.CascadeClassifier(cascadefile)
#on ouvre l'image enregistré par la caméra avec la librairi opencv
image = cv2.imread(imagePath)
#on convertit l'image en niveau de gris afin de pouvoir utiliser la fonction de détection de visage
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#on enregistre l'image obtenue
cv2.imwrite('./opencv.png',gray)
#on envoie notre image au réseau de neurones
faces = classCascade.detectMultiScale(gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.CASCADE_SCALE_IMAGE)
#on affiche le nombre de visage détecter
print("Il y a {0} visage(s)".format(len(faces)))
#pour chaque visage détectée on dessine un rectangle autour
for(x, y, w ,h) in faces:
cv2.rectangle(image, (x,y) , (x+w, y+h), (0, 255, 0), 2)
#on enregistre l'image obtenue
cv2.imwrite('./opencv2.png',image)
#on créer ou on ouvre le fichiers de logs
file = open("faceslog.txt","w+")
#pour chaque visages détectée
for i in range(len(faces)):
#on enregistre la découpe du visage
cv2.imwrite('./face{0}.png'.format(i),image[faces[i][1]:faces[i][1]+faces[i][3], faces[i][0]:faces[i][0]+faces[i][2]])
#on consigne les coordonnées du rectanges
file.write("Cadres du visage {0} --> {1}(antislash)n".format(i,faces[i]))
#on arrête la vidéo
camera.stop_preview()
finally:
#on ferme le fichier log
file.close()
#on coupe la liaison avec la caméra
camera.close()
« Je promets encore de l’emmener dans bien d’autres aventures… » termina ainsi le Duc Python.
« Eh Bien tout ceci est fort intéressant » répondit le roi, « Mais je veux entendre ce que le Compte C++ a à dire, car lui aussi désire la main de ma fille et viens très prochainement nous rendre visite au Château ! »...A Suivre.
En attendant la suite de l'épisode, vous pouvez retrouver d'autres scripts OpenCV sur notre carte micro-sd Raspbian Opencv tels que le redimensionnement d'images, le dessin avec OpenCV, ou encore la rotation d'images.
Carte Micro-SD de 32 Go contenant une imagé...
Kit de démarrage du Micro-ordinateur Raspberry Pi...
Micro-ordinateur Raspberry Pi de 4ème génération...
Module caméra miniature 5 Mégapixels se raccordant...
Kit de démarrage du Micro-ordinateur Raspberry Pi...