OpenCV
Ph.Leroy
2015-04-26
![]() |
| This library ... La librairie OpenCV permet de réaliser de nombreux traitements d'image et de s'interfacer à des équipements d'acquisition vidéo de manière portable. |
Cette librairie est trés puissante et mérite de pouvoir être appellée depuis sisal, cette page montre comment enregistrer des images dans une base de données de production.
La librairie opencv.sch décrit cinq types d'objets, ils sont tous préfixés par cv pour garder une certaine cohérence.
| Tpe d'objet | Fonction |
|---|---|
| cvCapture | Equipement physique d'acquisition d'image |
| cvImage | Une image capturée par un équipement et/ou pouvant être modifiée |
| cvWindow | Fenêtre de visualisation de données |
| cvMatrice | Matrice permettant de représenter des tableaux de valeurs en particulier de pixels |
| cvVector | Vecteur de données élémentaires |
Le script serveur va acquérir une image à chaque événement, par exemple le test d'un produit manufacturé, mais ici toutes les secondes.
Include "opencv.sch";
Use test;
Var cpt;
cap cvCapture; // La camera
img as cvImage; // Une image sur laquelle on travaille
m1 cvMatrice;
m2 cvMatrice;
monimage; // Variable sisal contenant une image
Server( _APPLICATION_)
Var i;
begin
On do begin
cap.openCam( 0); // Initialisation, ouverture de la camera 0
end
On horloge.ToutesLesSecondes do begin
img = cap.retrieve(); // Acquisition d'une image openCV
m1.set( img);
m2 = m1.cvtColor( CV_BGR2RGB); // Traitment d'image -> Conversion de BGR en RGB
setimage( monimage, m2.cols, m2.rows, m2.data); // Transfert dans une variable sisal
Prods.new(); // Creation d'un enregistrement dans la base de traà§abilité
Prods.WriteImage( Prods.photo, monimage); // Association de l'image du produit
Prods.Add(); // Enregistrement du produit
end
end
L'exploitation peut se faire ainsi dans un synoptique:
Object
il ImageList,"Default.png",...;
...
Function AfficheImage( x)
begin
if x >= 0 and x < prods.records() then begin
prods.read( x);
if prods.ReadImage( prods.photo, image) then begin
il.image = image;
end else il.image = defimage;
end
end
C'est pas plus compliqué que cela.
