Main

Référence : Fonctions Pyduino

Pyduino Multimedia : captureImage


Description

  • Cette fonction capture une image à partir de la webcam système et la stocke dans un buffer image OpenCV interne à la librairie Pyduino. Des définitions jusqu'à 1280x1024 peuvent être supportées, en fonction de la webcam utilisée.
  • L'image pourra ensuite être enregistrée dans un fichier avec la fonction saveImage() et affichée avec la fonction showImage(). Du texte pourra également être incrusté sur l'image avec la fonction addTextOnImage(), permettant d'horodaté simplement l'image capturée.
  • Les usages potentiels de cette fonction sont nombreux :
    • capture d'une image en fonction de l'état d'un capteur analogique ou numérique (détection d'un mouvement, d'un bruit...)
    • capture d'une image à intervalle régulier d'une scène fixe permettant de visualiser des phénomènes "lents" ou des trajectoires d'éléments mobiles variés, des flux, etc...

L'utilisation d'OpenCV pour la capture d'image ouvre la voie au traitement d'image... Les fonctions d'incrustation de texte sont déjà implémentées dans Pyduino, d'autres suivront.

Pré-requis

  • Cette fonction nécessite l'installation préalable de la librairie OpenCV pour Python. Si cette librairie n'est pas déjà installée sur votre système, l'installer avec la commande :
$ sudo apt-get install python-opencv

Matériel nécessaire

  • Une webcam USB fonctionnant sous Gnu/Linux doit être connectée sur l'un des ports USB. A titre indicatif, quelques webcams testées :
    • Logitech C170, C270,
    • Hercules Dualpix Exchange

Tests préalables

  • Il est utile de vérifier au préalable le bon fonctionnement de la webcam, ce qui se fait en lançant le logiciel Guvcview à partir du menu graphique Application > Sound et Video
  • Pour vérifier l'indice utilisé par le système pour la webcam, utiliser la commande suivante dans un terminal :
$ ls /dev/video*
  • On doit obtenir (ou équivalent) :
/dev/video0
  • Cet identifiant correspond à l'identifiant utilisé par le système pour la webcam. L'indice qui suit /dev/video peut changer, notamment si on utilise plusieurs webcams. Cet indice pourra être utilisé pour préciser la webcam source avec la fonction captureImage()

Syntaxe

captureImage()
captureImage(filepathImage)

Paramètres

  • filepathImage' : le chemin absolu du fichier image. Truc : on pourra utiliser les fonctions nowtime() et/ou today() pour créer un nom horodaté unique. Si aucun chemin n'est précisé, l'image n'est pas enregistrée.

Valeur renvoyée

Aucune

Explication technique

  • L'image est stockée dans un "buffer" interne de la librairie Pyduino. Le buffer est une image OpenCV créé avec les paramètres de taille indiqué. Le "buffer interne" est une image RGB 3 canaux 8 bits.

Exemple:

Il est possible que quelques messages d'erreur s'affichent lors du lancement de la première capture d'image : ceux-ci sont sans conséquence sur la capture et sont dus à l'initialisation de la webcam par OpenCV.


Code *.yno à copier/coller dans l'IDE Pyduino
Voir ici si vous préférez convertir le code Pyduino en code Python pour l'utiliser avec l'éditeur Geany par exemple.


# exemple pyDuino - par X. HINAULT - www.mon-club-elec.fr
# Juillet 2013 - Tous droits réservés - GPLv3

# test Capture Image

# entete declarative
noLoop=True

#--- setup ---
def setup():

        filepathImage=homePath()+dataPath(IMAGE)+"test.jpg"
        print filepathImage

        # initialisation webcam
        initWebcam(0,640,480) # la resolution doit etre supportee par la webcam !

        delay(2000) # laisse temps initialisation

        # capture image
        captureImage(filepathImage) # charge une image dans le buffer a partir webcam

        #addTextOnImage(today("/")+"@"+nowtime(":"), 10,height()-30, green) # ajoute texte sur image
        addTextOnImage(nowdatetime(), 10,height()-20, blue) # ajoute texte sur image

        saveImage(filepathImage) # enregistre l'image

        showImage(filepathImage) # affiche l'image


# -- fin setup --

# -- loop --
def loop():
        return  # si vide

# -- fin loop --
 

Truc d'utilisation

  • Il sera possible de visualiser sous forme accélérée les séries d'images obtenues à l'aide du logiciel stopmotion à installer avec :
$ sudo apt-get install stopmotion
  • Accessible ensuite depuis le menu graphique Applications > Sound and Video > stopmotion

Lien utile

Commentaires utilisateurs

Pouvoir faire interagir aussi simplement la capture d'image avec les entrées / sorties numériques ou analogiques, çà ouvre plein de possibilités intéressantes.

Voir également


Page d'accueil de la référence Pyduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées à l'adresse suivante : support_at_mon-club-elec_point_fr

Cette page a été réalisée par Xavier HINAULT (2013) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.