Abstrait

Abstrait
Le but de ce document est d'aider un lecteur à démarrer avec la bibliothèque de vision par ordinateur OpenCV sur le système Linux. OpenCCV est une bibliothèque multiplateforme, mais cet article sera axé uniquement sur OpenCV à l'aide du système d'exploitation Linux (bien que la simple installation de la bibliothèque OpenCV et de la caméra vidéo soit spécifique à la plate-forme, tous les exemples de cet article doivent compiler sur n'importe quelle plate-forme où OpenCV est correctement installé comme Mac OS, MS Windows et etc.). Le lecteur sera guidé via un guide étape par étape sur la façon d'installer et d'utiliser certaines des fonctions de base de la bibliothèque OpenCV telles que l'affichage d'images, la lecture d'une vidéo ou l'utilisation d'une caméra vidéo pour traiter un flux d'entrée vidéo.

Conventions utilisées dans cet article:

  • $ - exécution sur la ligne de commande par un utilisateur non privilégié
  • # - exécution sur la ligne de commande par un superutilisateur
  • La commande réelle à exécuter sur la ligne de commande ou le code de programme à compiller
  • SORTIR: sortie produite sur la ligne de commande par exécution de commande
  • NOTE: Notes générales et informations supplémentaires

Introduction

En termes simples, une vision informatique est un domaine scientifique qui tente de fournir une vue à la machine. Ce domaine scientifique s'est développé rapidement ces dernières années. Parmi les chercheurs, cette croissance est en raison de nombreuses améliorations des algorithmes de vision et parmi les amateurs de vision par ordinateur, cela est dû aux composants matériels moins chers et à la puissance de traitement. La bibliothèque OpenCV joue un grand rôle dans le domaine de la vision par ordinateur car il aide grandement à réduire le coût et le temps de préparation de l'environnement de recherche sur la vision par ordinateur nécessaire aux étudiants universitaires, aux amateurs et aux professionnels. OpenCV fournit également une fonction simple à utiliser pour faire le travail d'une manière simple, efficace et élégante. OpenCV a été lancé par Intel, et plus tard, il a été transformé en un projet open source maintenant disponible sur Sourceforge.filet. La bibliothèque OpenCV a une disponibilité multi-plateformes, et elle est partiellement écrite en langue C ++ et C. Malgré le fait que cette bibliothèque est disponible sur de nombreuses distributions Linux à partir de ses référentiels de package pertinents, dans cet article, nous tenterons d'installer et d'utiliser la bibliothèque OpenCV compilée à partir d'un code source téléchargé à partir de Sourceforge.site Web net.

Les raisons de la compilation d'un code source peuvent inclure:

  • Nouvelle version 2.0.0 récemment publié et plus de fonctionnalités disponibles
  • certains bogues corrigées qui ont affecté Linux OpenCV 1.0.0 versions (comme cvGetCaptureProperty () etc. )
  • Plus de support est disponible pour OpenCV 2.0.0 version que pour l'ancien 1.0.0 version

Cet article commencera par l'installation d'OpenCV sur Debian 5.0 (Lenny). Plus tard, un lecteur sera guidé à travers un certain nombre d'exemples sur la façon d'utiliser OpenCV pour afficher une image, lire une vidéo et utiliser une caméra pour capturer le flux d'entrée vidéo.

Installation

La section suivante décrira un processus d'installation de la bibliothèque OpenCV en construisant des binaires à partir d'un code source disponible auprès de Sourceforge.filet. La procédure d'installation démontrée ici a été testée sur Debian 5.0 (Lenny) et Ubuntu 9.10 (koala karmique). La procédure d'installation réelle doit être similaire ou exactement la même pour la plupart des distributions Linux en dehors de la première étape où les dépendances de package sont installées à partir des référentiels de distribution Debian et Ubuntu pertinents. Sur RPM Linux System, vous devriez consulter votre outil Red Hat Package Management (RPM) pour les alternatives aux prérequis OpenCV décrits dans la section suivante.

Conditions préalables

Premièrement, ce qui doit être fait, c'est l'installation des conditions préalables requises requises par la bibliothèque OpenCV. La liste des dépendances peut être légèrement modifiée en fonction de vos besoins:

  • LibavFormat-Dev - Fichiers de développement pour LibavFormat la bibliothèque FFMPEG File Format
  • libgtk2.0-DEV - Fichiers de développement pour la bibliothèque d'interface utilisateur GTK +
  • PKG-Config - Gérer les indicateurs de compilation et de liaison pour les bibliothèques
  • Libswscale-DEV - Fichiers de développement pour libswscale la bibliothèque d'échelle vidéo FFMPEG
  • CMake - un système de fabrication de la plate-forme multiplateforme utilisé pour la compilation du code source
  • BZIP2 - Compresseur de fichier de sort de blocs de haute qualité utilisé pour extraire le fichier source OpenCV

La commande Linux suivante va automatiquement récupérer et installer tous les packages requis et ses dépendances:

# apt-get install libavformat-dev libgtk2.0-DEV PKG-CONFIG CMAKE LIBSWSCALE-DEV BZIP2

Obtention du code source OpenCV

La version actuelle de la bibliothèque OpenCV au moment de la rédaction est une version 2.0.0. Vous pouvez télécharger un code source OpenCV en pointant votre navigateur Web à OpenCV-SourceForge.net ou utilisez la commande wget pour acquérir un code source directement sur la ligne de commande:

$ wget http: // téléchargements.sourceforge.net / project / opencvlibrary / opencv-Unix / 2.0 / opencv-2.0.0.le goudron.bz2

Extraire le code source OpenCV

Que vous ayez utilisé un navigateur Web ou un utilitaire WGET pour télécharger le code source de la bibliothèque OpenCV, vous devez vous retrouver avec OpenCV-2.0.0.le goudron.BZ2 Tarball dans votre répertoire de travail actuel. L'étape suivante consiste à extraire les fichiers source avec la commande TAR. La commande Linux suivante extrait tous les fichiers dans OpenCV-2.0.0 Répertoire:

$ TAR XVJF OpenCV-2.0.0.le goudron.bz2

Nouveau opencv-2.0.0 Répertoire (environ. 67 Mo) devrait être maintenant disponible dans votre répertoire de travail actuel et contiendra tous les fichiers source nécessaires pour une compilation.

Compilation et installation de binaires OpenCV

Pour compiler le code source OpenCV, nous allons utiliser un système d'ouverture. Les indicateurs de compilation de configuration CMake suivants seront définis:

  • Cmake_build_type = version: cmake Bulid un projet de version
  • Cmake_install_prefix = / usr / local: répertoire à utiliser comme destination d'installation
  • Build_python_support: activer le support Python

NOTE: CMake Utility par défaut ne fournit pas de moyen de désinstaller votre projet à partir d'un système. Si vous avez besoin de désinstaller OpenCCV à partir de votre système, vous devez apporter les modifications appropriées avant de procéder avec la compilation.

Accédez à OpenCV-2.0.0 Répertoire contenant un code source:

$ cd opencv-2.0.0 /

Créer et accéder à un nouveau répertoire à utiliser par CMake. I Ce cas, le nom du répertoire est le même que le type de projet, «Release»:

$ MKDIR Release; version du CD

Utilisez CMake pour créer des fichiers de configuration avec des indicateurs de configuration décrits ci-dessus:

NOTE: L'indicateur CMake_install_prefix peut être défini sur n'importe quel chemin d'installation souhaité

cmake -d cmake_build_type = release -d cmake_install_prefix = / usr / local -d build_python_support = on… 

Après l'exécution de la commande cmake, le résumé d'installation sera affiché et ressemblera à celui ci-dessous.

SORTIR:
- Configuration générale pour OpenCV 2.0.0 =================================================
-
- Compilateur:
- C ++ Flags (release): -Wall -Pthread -ffunction-Sections -o3 -dnDebug -Fomit-Frame-Pointer -o3 -ffast-Math -mmmx -dnDebug
- C ++ Flags (Debug): -Wall -pthread -ffonction-sections -g -o0 -ddebug -d_debug
- Drapeaux de linker (version):
- Drapeaux de linker (débogage):
-
- GUI:
- Gtk + 2.x: 1
- Gthread: 1
-
- E / S d'image:
- JPEG: Vrai
- PNG: vrai
- TIFF: faux
- Jasper: faux
-
- E / S vidéo:
- DC1394 1.x: 0
- DC1394 2.x: 0
- Ffmpeg: 1
- codec: 1
- Format: 1
- Util: 1
- SWSCALE: 1
- style gentoo: 1
- Gstreammer: 0
- Unicap:
- V4L / V4L2: 1/1
- Xine: 0
-
- Interfaces:
- Old Python: 0
- Python: sur
- Utilisez ipp: non
- Construire la documentation 0
-
- Installer le chemin: / USR / local
-
- cvconfig.h est en: / home / sandbox / opencv-2.0.0 / libération
- -
-
- Configuration terminée
- Génération terminée
- Les fichiers de construction ont été écrits sur: / home / sandbox / opencv-2.0.0 / libération

Lorsque l'exécution de la commande cmake n'a produit aucune erreur, nous sommes prêts à compiler un code source.:

NOTE: Il y aura un certain nombre de messages d'avertissement affichés sur votre terminal lors d'un processus de construction. Ces messages d'avertissement peuvent être ignorés, sauf s'ils affectent vos paramètres d'environnement OpenCV préférés!

$ faire

Si aucune erreur n'a été affichée sur le terminal et que la boîte de dialogue Progress a atteint [100%] pendant le processus de construction, nous sommes prêts à installer les bibliothèques OpenCV. L'installation est facultative tant que votre variable environnementale LD_LIBRARY_PATH est liée à un répertoire construit OpenCV approprié. Si vous souhaitez installer OpenCV dans / usr / local comme défini par Cmake Flags ci-dessus, exécutez une commande Linux suivante:

# faire l'installation

Exportez le chemin correct vers la variable d'environnement LD_LIBRARY_PATH et utilisez LDConfig pour lier dynamiquement à une bibliothèque OpenCV:

$ export ld_library_path = / usr / local / lib /: $ ld_library_path
# ldconfig

Si vous ne souhaitez pas installer la bibliothèque OpenCV, vous devez simplement exporter un chemin correct vers le répertoire de construction de la bibliothèque OpenCV pour informer votre système où se trouve la bibliothèque. Supposons que votre nouveau répertoire de version soit situé sur ~ / opencv-2.0.0 / Release Alors, votre chemin d'exportation ressemblera à ceci:

$ export ld_library_path = ~ / opencv-2.0.0 / release /: $ ld_library_path
# ldconfig

Cela complète une procédure d'installation de la bibliothèque OpenCV. Pour plus d'informations concernant l'installation d'OpenCV, visitez le guide d'installation d'OpenCV.

Exemples d'OpenCV

Sans prolonger une discussion sur ce qu'est la vision par ordinateur et comment elle est liée à OpenCV, nous allons maintenant passer à quelques exemples sur la façon d'écrire, de compiler et d'exécuter des programmes simples à l'aide de la bibliothèque OpenCV. Si vous êtes intéressé par une introduction plus intense à la vision par ordinateur et à l'OpenCV, je recommande un livre: «Apprentissage OpenCV: Vision par ordinateur avec la bibliothèque OpenCV de Gary Bradski et Adrian Kaehler».

Une conversion d'image

Commençons par quelque chose de vraiment simple et c'est 7 lignes de code pour convertir l'image entre les types d'images suivants:

  • Windows Bitmaps - BMP, dib
  • Fichiers JPEG - JPEG, JPG, JPE
  • Graphiques réseau portables - PNG
  • Format d'image portable - PBM, PGM, PPM
  • Sun Rasters - SR, RAS
  • Fichiers TIFF - TIFF, TIF

Le programme suivant acceptera deux arguments de ligne de commande, l'image source et l'image de destination. L'image source sera stockée en tant que type d'image spécifié par extension de fichier d'image de destination. Enregistrez le code suivant dans un fichier appelé conversion d'image.C:

#include "highgui.H "
int main (int argc, char ** argv)
IPlimage * img = cvloadImage (argv [1]);
cvsaveImage (argv [2], img);
cvReleaseImage (& img);
return0;

Le code source de notre nouveau programme est prêt et voici la partie de compilation. En supposant que vous avez enregistré votre premier programme OpenCV comme conversion d'image.c Vous pouvez compiler votre programme avec la commande Linux suivante:

$ g ++ 'PKG-Config OpenCV --CFLAGS - CONVERSION D'IMAGE DE LIBS.C -o-Conversion d'image

Après une compilation réussie, un nouveau fichier binaire exécutable nommé la conversion d'image est créé dans votre répertoire de travail actuel. Avant de tester ce nouveau programme, nous avons besoin d'un exemple d'image:

$ wget -o image.png http: // www.linuxconfig.org / modèles / rhuk_milkyway / images / mw_joomla_logo.PNG

wget a téléchargé et enregistré une image d'image.PNG dans votre répertoire actuel, et nous pouvons maintenant tenter de convertir cette image en n'importe quel type d'image répertorié ci-dessus. La commande Linux suivante convertira le type d'image PNG en jpg. En supposant que la compilation du programme n'a produit aucune erreur et que votre fichier binaire est enregistré sous forme de conversion d'image, vous pouvez convertir entre deux types d'images avec la commande Linux suivante:

$ ./ image de conversion d'image.image PNG.jpg

Pour confirmer que l'image a été convertie, une commande de fichier peut être utilisée pour afficher un type de fichier pour un fichier donné comme argument:

$ Image du fichier.*

SORTIR:
image.JPG: Données d'image JPEG, JFIF Standard 1.01
image.PNG: Image PNG, 270 x 105, 8 bits / couleur RGBA, non interlasée

Lorsque vous regardez la commande de compilation une fois de plus, vous pouvez observer qu'un utilitaire PKG-Config avait été utilisé pour récupérer un emplacement d'une bibliothèque OpenCV avec l'option -cflags ainsi que pour obtenir toutes les dépendances en utilisant l'option -LIBS. Par conséquent, une commande alternative à celle ci-dessus sans utilitaire PKG-Config peut être construite pour ressembler à ceci:

g ++ -i / usr / local / include / opencv -l / usr / local / lib \
-lcxcore -lcv -lhighgui -lcvaux -lml-conversion d'image.C -o-Conversion d'image

Cependant, dans les deux cas, la commande de compilation créera des dépendances de bibliothèque indésirables:

$ LDD-CONVERSION IMAGE | Grep local

SORTIR:
libcxcore.donc.2.0 => / usr / local / lib / libcxcore.donc.2.0 (0xb7ccc000)
libcv.donc.2.0 => / usr / local / lib / libcv.donc.2.0 (0xb7a7a000)
libhighgui.donc.2.0 => / usr / local / lib / libhighgui.donc.2.0 (0xb7a3f000)
libcvaux.donc.2.0 => / usr / local / lib / libcvaux.donc.2.0 (0xb793b000)
libml.donc.2.0 => / usr / local / lib / libml.donc.2.0 (0xb78d8000)

Notre programme dépend de HighGui d'OpenCV.h bibliothèque et donc y compris -lcvaux -lml -lcxcore et -lcv Les dépendances dans une commande de compilation n'est pas nécessaire. Une version raccourcie de la commande de compilation ressemblera à ceci:

$ g ++ -i / usr / local / include / opencv -lhighgui-conversion d'image.C -o-Conversion d'image

Par conséquent, une dépendance à la bibliothèque de programme avait été réduite:

$ LDD-CONVERSION IMAGE | Grep local

SORTIR:
libhighgui.donc.2.0 => / usr / local / lib / libhighgui.donc.2.0 (0xb7f61000)
libcxcore.donc.2.0 => / usr / local / lib / libcxcore.donc.2.0 (0xb7a75000)
libcv.donc.2.0 => / usr / local / lib / libcv.donc.2.0 (0xb7823000)

À partir de maintenant, c'est à vous de décider comment vous compilez des exemples suivants dans cet article. Gardez à l'esprit que la première commande de compilation, y compris PKG-Config, sera en mesure de compiler tous les exemples. Cependant, il peut produire un binaire avec des dépendances excessives.

Afficher une image

À ce stade, nous avons pu convertir un type d'image et confirmer sa méta description par commande de fichier. Il est temps d'afficher une image à l'écran et de confirmer visuellement qu'il a été converti correctement. Le programme d'exemple suivant affichera une image à l'écran:

#include "highgui.H "
int main (int argc, char ** argv)
// cvloadImage détermine un type d'image et crée une datastructure avec une taille appropriée
IPlimage * img = cvloadImage (argv [1]);
// Créer une fenêtre. Le nom de la fenêtre est déterminé par un argument fourni
cvnamedwindow (argv [1], cv_window_autosize);
// Affiche une image à l'intérieur et à la fenêtre. Le nom de la fenêtre est déterminé par un argument fourni
cvShowImage (argv [1], img);
// attendez indéfiniment pour Keystroke
CvwaitKey (0);
// Libérez le pointeur vers un objet
cvReleaseImage (& img);
// détruire une fenêtre
cvDestroywindow (argv [1]);

NOTE: Retournez dans une section de conversion d'image ci-dessus, si vous avez besoin d'aide sur la façon de compiler ce programme OpenCV.

Exécution de ce programme d'affichage-image avec une image.JPG produit dans la section précédente affichera cette image à l'écran:

$ Image d'image d'affichage.jpg

SORTIR:

Gaussien lisse

Vous pouvez également tenter de créer une transformation d'image simple en utilisant la méthode de lisse gaussienne. Ajoutez une ligne suivante dans votre code d'image d'affichage avant un appel de fonction CVShowImage:

cvnamedwindow (argv [1], cv_window_autosize);
Cvsmooth (IMG, IMG, CV_GAUSSIAN, 9, 9);

cvShowImage (argv [1], img);

et ajouter en première ligne à votre programme '#include "CV.H ”'Directive.

Cela incorporera une méthode lisse gaussienne centrée sur chaque pixel avec une zone de 9 x 9 dans l'image de sortie. Après la compilation et l'exécution, une sortie suivante sera présentée:
SORTIR:

Lire la vidéo

Cette section comprend un code de programme qui créera un simple lecteur vidéo à l'aide de la bibliothèque OpenCV. Exemple de vidéo, arbre.Avi peut être trouvé dans votre opencv-2.0.0 Répertoire où vous avez extrait ses fichiers source (OpenCV-2.0.0 / échantillons / c / arbre.Avi):

#include "CV.H "
#include "highgui.H "
// initialise les variables globales
int g_slider_position = 0; // Position de trackbar
Cvcapture * g_capture = null; // Structure pour créer une entrée vidéo
// routine à appeler lorsque l'utilisateur déplace un curseur de barre de piste
void ontrackbarslide (int pos)
cvsetCaptureProperty (
g_capture,
Cv_cap_prop_pos_frames,
point de point
));

int main (int argc, char ** argv)
// Créez une fenêtre avec une taille appropriée. Le nom de Windows est déterminé par le nom du fichier
// fourni comme argument
cvnamedwindow (argv [1], cv_window_autosize);
// ouvrir une video
g_capture = cvcreateFileCapture (argv [1]);
// Définir la position de lecture dans des unités de cadres et récupérer le nombre total de cadres
int frames = (int) cvGetCaptureProperty (
g_capture,
Cv_cap_prop_frame_count
));
// Ne créez pas de TreaCkbar si la vidéo n'inclut pas d'informations
// sur le nombre de cadres
si (cadres!= 0)
cvcreateTrackbar (
"Position",
Argv [1],
& g_slider_position,
cadres,
ontrackbarslide
));

// Afficher la vidéo par image
Cadre iPlimage *;
tandis que (1)
frame = cvQueryFrame (g_capture);
si( !cadre) casser;
cvshowImage (argv [1], cadre);
// Définit la barre de piste sur une position de cadre actuelle
cvsetTrackBarpos ("position", argv [1], g_slider_position);
g_slider_position ++;
char c = cvwaitkey (33);
// Arrête si l'ESC est pressé
if (c == 27) casser;

// mémoire libre
CvReleAsCapture (& g_capture);
cvDestroywindow (argv [1]);
return (0);

NOTE: Retournez dans une section de conversion d'image ci-dessus, si vous avez besoin d'aide sur la façon de compiler ce programme OpenCV.

Exécutez votre nouveau programme OpenCV et en tant qu'argument, fournit un fichier vidéo:

 $ ./ vidéo-joueur ~ / opencv-2.0.0 / échantillons / c / arbre.avi

SORTIR:

Entrée à partir d'une caméra vidéo

Le but de cette section est de fournir quelques conseils simples sur la façon de configurer une caméra sur un système Linux et comment confirmer que votre caméra vidéo est reconnue correctement par votre système. Lorsque votre appareil photo est prêt, vous serez présenté avec un programme simple qui est capable d'afficher une vidéo à l'aide d'une caméra vidéo comme entrée.

Pour cet article, j'ai utilisé un Logitech, Inc. Caméra QuickCam Pro 9000. Installation de cette caméra sur Debian 5.0 ou Ubuntu 9.Le système 10 (Karmic Koala) était une simple procédure de plug & play. Voici quelques conseils sur la façon de confirmer que votre appareil photo avait été reconnu par votre système:

NOTE:
Votre sortie sera différente !

$ lsusb

SORTIR:
Bus 002 Dispositif 003: ID 046D: 0990 Logitech, Inc. QuickCam Pro 9000
Bus 002 Dispositif 001: ID 1D6B: 0002 Linux Foundation 2.0 moyeu racine
Bus 001 Dispositif 002: ID 045E: 00d1 Microsoft Corp. Souris optique avec roue inclinable
Bus 001 Dispositif 001: ID 1D6B: 0001 Linux Foundation 1.1 hub racine

La commande LSUSB révèle un type de caméra branché sur votre système. La sortie de la commande LSUSB ne signifie pas que votre appareil photo est maintenant prêt à l'emploi. Voyons si certains modules sont associés à la vidéo:

$ lsmod | vidéo grep

SORTIR:
uvcvideo 45800 0
compat_ioctl32 1312 1 uvcvideo
VideoDev 27520 1 Uvcvideo
V4L1_COMPAT 12260 2 UVCVIDEO, Videodev
USBCORE 118192 7 SND_USB_AUDIO, SND_USB_LIB, UVCVIDEO, USBHID, EHCI_HCD, OHCI_HCD

Cela semble très prometteur. Mon appareil photo utilise un module UVCVideo. Si vous ne voyez aucun ouptut ou que vous ne voyez que la sortie non liée à votre appareil photo, vous devrez peut-être recompiler votre noyau ou installer un module approprié.

Nous devons maintenant trouver un fichier de périphérique correspondant à votre appareil photo. Pour ce faire, nous utilisons l'utilitaire XAWTV:

NOTE: Si la commande xawtv n'est pas avaialable, vous devez installer le package XAWTV.

$ xawtv -hwscan

SORTIR:
C'est xawtv-3.95.dfsg.1, en cours d'exécution sur Linux / I686 (2.6.26-2-686)
à la recherche d'appareils disponibles
Port 65-96
Type: xvideo, imageur d'image
Nom: NV Video Blitter

/ dev / video0: ok [-device / dev / video0]
Type: V4L2
Nom: Caméra UVC (046d: 0990)
drapeaux: capture

Le fichier de périphérique assis avec mon appareil photo est / dev / vidéo0 . Vous pouvez également voir une erreur sur votre terminal disant: Ouvert / dev / vidéo0: autorisation refusée. Pour résoudre ce problème, vous devez faire de vous-même une partie d'un groupe «vidéo» en groupe. Testez maintenant votre appareil photo avec une commande Linux suivante:

$ xawtv -c / dev / vidéo0

Si vous avez eu des problèmes dans certaines des étapes précédentes, voici quelques liens, ce qui peut vous aider à résoudre votre problème:

  • Compatibilité de la caméra Linux OpenCV
  • Webcam Linux Howto
  • Caméras prises en charge utilisant des pilotes SPCA5XX
  • Caméras prises en charge à l'aide de pilotes UVCVideo

Utiliser une caméra avec la bibliothèque OpenCV est simple car écrire un programme pour lire la vidéo. Copiez un code source créé précédemment de votre programme de lecteur vidéo et changez la ligne:

Cvcapture * capture = cvcreateFileCapture (argv [1]);
pour:
Cvcapture * capture = cvcreateCaMeracapture (0);

Ainsi, l'ensemble du code ressemblera à celui ci-dessous:

#include "highgui.H "
int main (int argc, char ** argv)
cvnamedWindow ("example2", cv_window_autosize);
Cvcapture * capture = cvcreateCaMeracapture (0);
Cadre iPlimage *;
tandis que (1)
frame = cvQueryFrame (capture);
si( !cadre) casser;
cvShowImage ("Example2", cadre);
char c = cvwaitkey (33);
if (c == 27) casser;

CvReleAsCapture (& Capture);
cvDestroywindow ("Example2");

Notez qu'une fonction CVCreateCaMeracapture () n'a pris aucun fichier ou argument de périphérique spécifique. Dans ce cas, OpenCV commencera à utiliser la première caméra disponible dans votre système. Compiler et exécuter ce programme et si tout jusqu'à présent se passe bien, vous devriez vous voir sur votre écran.

NOTE: Retournez dans une section de conversion d'image ci-dessus, si vous avez besoin d'aide sur la façon de compiler ce programme OpenCV.

Écrivez un fichier AVI à partir d'une caméra

Le dernier exemple tentera de lire une entrée d'un appareil photo et de l'écrire dans un fichier. En attendant, le programme affichera également une fenêtre avec un flux vidéo d'entrée de la caméra. L'entrée vidéo est enregistrée dans un fichier fourni comme argument sur la ligne de commande. Le codec utilisé est spécifié par quatrecc (code à quatre caractères) MJPG qui, dans ce cas, est motion jpeg. Cet exemple de programme est très basique et il y a beaucoup de place à l'amélioration:

#inclure 
#inclure
main (int argc, char * argv [])
Cvcapture * capture = null;
capture = cvcreateCaMeracapture (0);
IPlimage * Frames = cvQueryFrame (capture);
// Obtenez une taille de trame à utiliser par la structure de l'écrivain
Cvsize size = cvSize (
(int) cvGetCaptureProperty (capture, cv_cap_prop_frame_width),
(int) cvGetCaptureProperty (capture, cv_cap_prop_frame_height)
));
// Déclarer la structure de l'écrivain
// Utiliser Fourcc (code à quatre caractères) MJPG, le motion JPEG Codec
// Le fichier de sortie est spécifié par le premier argument
CvVideOwriter * scénariste = cvcreateVideOwriter (
Argv [1],
Cv_fourcc ('m', 'j', 'p', 'g'),
30, // définir FPS
taille
));
// Créer une nouvelle fenêtre
cvnamedwindow ("Enregistrement… appuyez sur ESC pour arrêter !", Cv_window_autosize);
// Afficher la capture dans la fenêtre et enregistrer dans un fichier
// Enregistrer jusqu'à ce que l'utilisateur frappe la clé ESC
tandis que (1)
frames = cvQueryFrame (capture);
si( !cadres) casser;
CVShowImage ("Enregistrement… appuyez sur ESC pour s'arrêter !", cadres );
cvwriteFrame (écrivain, cadres);
char c = cvwaitkey (33);
if (c == 27) casser;

CvReleaseVideOwriter (& écrivain);
CvReleAsCapture (& Capture);
cvDestroywindow ("Enregistrement… appuyez sur ESC pour s'arrêter !");
return0;

En supposant que vous avez enregistré et compilé ce programme comme «sauvegarde-caméra», vous pouvez strater d'enregistrement d'une vidéo sur un fichier vidéo.Avi avec cette commande:
NOTE: Retournez dans une section de conversion d'image ci-dessus, si vous avez besoin d'aide sur la façon de compiler ce programme OpenCV.

$ ./ SAVE-CAMERA-INPUT-FILLE.avi

Conclusion

Cet article devrait vous donner un bon début de bibliothèque OpenCV du point de vue de l'installation. Les exemples présentés n'ont pas grand-chose à voir avec la vision par ordinateur elle-même, mais ils fournissent plutôt un bon terrain de test pour votre installation OpenCV. Même à partir de ces exemples d'OpenCV simples, il est également clair qu'OpenCV est une bibliothèque hautement civilisée car avec quelques lignes de code OpenCV, vous pouvez obtenir d'excellents résultats. Votre commentaire sur cet article est très apprécié car il peut avoir un grand impact sur la qualité de l'article. Il y a plus d'OpenCV, alors restez à l'écoute en subcrit à LinuxConfig.Org RSS Feed (coin supérieur gauche).

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Comment doubler Kali Linux et Windows 10
  • Meilleur logiciel d'édition vidéo sur Linux
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Meilleur lecteur PDF pour Linux
  • Comment obtenir une adresse MAC dans Linux
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Manjaro Linux Windows 10 Double démarrage
  • Fichiers de configuration Linux: 30 premiers