View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Processing : Capture vidéo avec la librairie GSVidéo : infos techniques utiles pour utiliser la librairie GSVidéo sous Ubuntu 10.04

Par X. HINAULT. Le 11 Aout 2011.

Pourquoi utiliser la librairie GSVideo

  • J'ai utilisé dans un premier temps la librairie openCV pour la capture vidéo sous Processing, mais autant les fonctions de reconnaissance visuelle sont vraiment bien, autant la capture vidéo présente quelques limites : lenteur en fait, utilisation un seul thread, et ne supporte que 1 seul flux webcam...
  • Dans mes développements, j'ai eu besoin de pouvoir capturer plusieurs flux vidéos webcam (vision binoculaire, triangulation suivi d'objet) et aussi d'optimiser la rapidité du suivi d'objet par webcam... C'est ce qui m'a conduit à utiliser la librairie GSVideo pour la capture vidéo à partir de flux webcam avec Processing. GSVideo s'appuie sur GStreamer qui est disponible sous Ubuntu .
  • GSVideo est une librairie disponible pour la capture vidéo sous Ubuntu avec Processing sans utiliser QuickTime... Cette librairie présente l'avantage de permettre une capture d'image vidéo beaucoup plus rapide que la librairie openCV. Il est tout à fait possible ensuite d'utiliser l'image obtenue pour traitement dans openCV qui peut être utilisé de façon concommittante. En pratique, pour le suivi d'objet, la librairie GSVidéo améliore significativement la fluidité de la poursuite d'objet.
  • GSVideo permet également la capture multi-webcam, openCV pouvant s'appliquer secondairement sur chaque flux webcam.
  • La librairie GSVideo utilise d'emblée le multi-thread, ce que ne fait pas openCV apparemment pour la capture vidéo. La rapidité obtenue est significativement supérieure !

Intro installation

  • Le bon fonctionnement de la librairie GSVideo nécessite plusieurs éléments sur le système Ubuntu :
    • GStreamer installé et librairies utiles GStreamer installées
    • uvc installé avec librairies utiles
    • v4l2 installé
  • Et bien sûr le librairie GSVideo installée (dernière version de préférence) :

La dernière librairie GSVideo :

GStreamer et librairies utiles GStreamer

  • Sous Ubuntu 10.04, Gstreamer est installé par défaut.
  • vérifier que les librairies/paquets suivant(e)s ou équivalents sont présentes, notamment, à priori :

voir ici : http://codeanticode.wordpress.com/2011/03/15/gsvideo-0-8/

Pour tester les fonctions installées dans un Terminal : $ gst-inspect-0.10

Pour tester l'installation gstreamer : $ gstreamer-properties

Il semble également utile d'installer gstreamer-tools

Pour lancer une capture en ligne de commande : faire :

  • $ gst-launch v4l2src ! jpegdec ! xvimagesink
  • ou $ gst-launch v4l2src ! xvimagesink

Liste de tous les plugins : http://gstreamer.freedesktop.org/documentation/plugins.html

  • Sous (X)Ubuntu 11.10, il existe un bug au lancement de GSVideo dans Processing si on n'a pas installé au préalable sudo apt-get install libgtk2.0-dev

Voir :

uvc

  • notamment uvc-capture ?

V4L2

La dernière librairie GLGraphics :

Trucs utiles

  • Pour gérer les périphériques V4L2 sous Ubuntu, il peut être intéressant le logiciel Video4Linux Control Panel (depuis la logithèque) qui se trouve ensuite dans Système>Préférences> (Ubuntu 10.04 LTS)
  • Egalement, Video4Linux Device Preference depuis la logithèque qui se trouve ensuite dans Sons et Vidéos
  • Le logiciel Guvcview également disponible depuis la logithèque permet également de tester ses webcams.
  • Se reporter également à la doc de la librairie vidéo native de Processing, GSVideo reprenant la plupart de ces fonctions. Voir ici : http://processing.org/reference/libraries/video/index.html

Remarques diverses

  • 12/08/2011 : De temps en temps, avec une webcam DualPix Exchange, j'ai le message d'erreur suivant (qui ne stoppe pas cependant le programme Processing) :
 libv4l2: error converting / decoding frame data: v4l-convert: error parsing JPEG header: We do not support more than 4 AC Huffman table

Ce message d'erreur semble provoqué :

  • lorsque la luminosité baisse par exemple.
  • Au démarrage lorsque le framerate webcam est inférieur à 20. Il apparaît quasiment pas lorsque le framerate du programme et des webcam est entre 20 et 30 ou framerate programme multiple du framerate webcam.
  • 12/08/2011 : La librairie GLGraphics entraîne plantage plus facilement que GSvideo seul
  • 12/08/2011 : L'utilisation de captureEvent() est moins stable que lorsque le code est mis dans draw()