Premiers pas avec opencv

Charger et afficher une image avec OpenCV

Avec cet exemple, nous verrons comment charger une image couleur à partir du disque et l’afficher à l’aide des fonctions intégrées d’OpenCV. Nous pouvons utiliser les liaisons C/C++, Python ou Java pour y parvenir.

En C++ :

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>

#include <iostream>

using namespace cv;

int main(int argc, char** argv) {
    // We'll start by loading an image from the drive
    Mat image = imread("image.jpg", CV_LOAD_IMAGE_COLOR);

    // We check that our image has been correctly loaded
    if(image.empty()) {
        std::cout << "Error: the image has been incorrectly loaded." << std::endl;
        return 0;
    }

    // Then we create a window to display our image
    namedWindow("My first OpenCV window");

    // Finally, we display our image and ask the program to wait for a key to be pressed
    imshow("My first OpenCV window", image);
    waitKey(0);

    return 0;
}

En Python :

import sys
import cv2

# We load the image from disk
img = cv2.imread("image.jpg", cv2.CV_LOAD_IMAGE_COLOR)

# We check that our image has been correctly loaded
if img.size == 0
    sys.exit("Error: the image has not been correctly loaded.")

# We create a window to display our image
cv2.namedwindow("My first OpenCV window")

# We display our image and ask the program to wait until a key is pressed
cv2.imshow("My first OpenCV window", img)
cv2.waitKey(0)

# We close the window
cv2.destroyAllWindows()

En Java :

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.CvType;
import org.opencv.highgui.Highgui;
public class Sample{
public static void main (String[] args) {

    //Load native opencv library
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

    //Read image from file first param:file location ,second param:color space
    Mat img = imread("image.jpg",CV_LOAD_IMAGE_COLOR);

    //If the image is successfully read.
    if (img.size() == 0) {
        System.exit(1);
    }
}

HighGui n’a pas d’équivalents namedwindows ou imshow dans opencv java. Utilisez swing ou swt pour afficher l’image.

Construisez et installez OpenCV à partir de la source

Ceci est un guide étape par étape pour installer OpenCV 3 sur un système Linux basé sur Debian à partir de la source. Les étapes doivent rester les mêmes pour les autres distributions, remplacez simplement les commandes du gestionnaire de packages appropriées lors de l’installation des packages pour la construction.

Remarque : Si vous n’avez pas envie de perdre du temps à créer des choses ou si vous n’aimez pas le terminal, vous pouvez très probablement installer OpenCV à partir de l’interface graphique du gestionnaire de packages Synaptic. Cependant, ces bibliothèques sont souvent obsolètes.

Préparez-vous pour la construction

Exécutez les commandes suivantes dans votre terminal pour installer les packages requis :

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config \
                     libavcodec-dev libavformat-dev libswscale-dev

Les packages suivants sont facultatifs :

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev \
                     libpng-devlibtiff-dev libjasper-dev libdc1394-22-dev

Exécutez la commande suivante pour obtenir le code source OpenCV et préparer le build :

mkdir ~/src
cd ~/src
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build && cd build

Construire et installer

Nous incluons les exemples dans la construction, mais n’hésitez pas à les laisser de côté. N’hésitez pas non plus à définir d’autres drapeaux et à personnaliser votre construction comme bon vous semble.

cmake -D CMAKE_BUILD_TYPE=RELEASE \
      -D CMAKE_INSTALL_PREFIX=/usr/local \
      -D INSTALL_PYTHON_EXAMPLES=ON \
      -D INSTALL_C_EXAMPLES=ON ..

Si CMake n’a pas signalé d’erreurs ou de bibliothèques manquantes, continuez la construction.

make -j$(nproc)

Si aucune erreur n’a été produite, nous pouvons continuer avec l’installation d’OpenCV sur le système :

sudo make install

OpenCV devrait maintenant être disponible sur votre système. Vous pouvez utiliser les lignes suivantes pour savoir où OpenCV a été installé et quelles bibliothèques ont été installées :

pkg-config --cflags opencv  # get the include path (-I)
pkg-config --libs opencv    # get the libraries path (-L) and the libraries (-l)

Tester l’installation

Nous construisons d’abord les exemples C++ :

cd ~/src/opencv/samples
cmake .
make

Si aucune erreur n’a été produite, exécutez un échantillon quelconque, par ex.

./cpp/cpp-example-edge

Si l’exemple s’exécute, les bibliothèques C++ sont correctement installées.

Ensuite, testez les liaisons Python :

python
>> import cv2
>> print cv2.__version__

Si ces commandes importent OpenCV et impriment la version correcte sans se plaindre, les liaisons Python sont correctement installées.

Félicitations, vous venez de construire et d’installer OpenCV. Bonne programmation !

Pour Mac, reportez-vous ici http://stackoverflow.com/questions/19671827/opencv-installation-on-mac-os-x

Premiers pas avec OpenCV 3.1 sous Windows

Nous installons OpenCV 3.1.0 sur Windows et commençons. Il existe deux façons d’installer OpenCV sur Windows. La première consiste à télécharger le programme d’installation et à l’exécuter. L’autre est de construire à partir de la source.

C’est le moyen le plus simple d’installer OpenCV et de commencer. OpenCV donne des binaires pré-construits à installer sur Windows [ici][1]. Une fois le téléchargement terminé, extrayez-le et installez-le dans le chemin choisi.

ProTip : Assurez-vous que votre chemin OpenCV n’inclut aucun espace. Donc, c’est mieux si vous l’installez simplement dans le répertoire racine C:\ ou D:\

Le problème avec la méthode ci-dessus est que vous ne pouvez pas utiliser les modules opencv_contrib. De plus, il n’est pas fourni avec tous les outils et bibliothèques tiers. Donc, si vous voulez utiliser tout cela, suivez simplement.

Je vais vous expliquer le minimum minimum pour installer OpenCV depuis les sources. Pour un plus avancé, reportez-vous [ici][2].

  • Installez [CMake][3].
  • Clonez la source OpenCV de https://github.com/Itseez/opencv.git dans un répertoire qui n’a pas d’espaces. Appelons-le “OpenCVdir”. [![entrez la description de l’image ici][4]][4]
  • Maintenant, ouvrez CMake GUI et ajoutez votre répertoire source (OpenCVdir) au menu Sources et créez le répertoire dans le menu de construction. Astuce : S’il n’y a pas de répertoire de construction, créez-en un dans votre dossier opencv. [![entrez la description de l’image ici][5]][5]
  • Cliquez sur Configurer et sélectionnez votre version du compilateur Visual Studio. J’avais Visual Studio 2013 Professional 32 bits, j’ai donc choisi le compilateur Visual Studio 12. [![entrez la description de l’image ici][6]][6]

Astuce : Vous pouvez télécharger Visual Studio 2013 Professional à partir d’ici. Il est livré avec 30 jours d’essai + 90 jours d’essai prolongé après la connexion.

  • Appuyez sur Terminer et CMake chargera automatiquement tous les packages. Vous pouvez ajouter ou supprimer les colis. Appuyez à nouveau sur Configurer.
  • Si vous souhaitez construire avec des modules opencv_contrib supplémentaires, vous devez les télécharger depuis [ici][7]. Ensuite, extrayez-les et ajoutez le répertoire opencv_contrib/modules à votre Faites comme ci-dessous. [![entrez la description de l’image ici][8]][8]
  • Maintenant, appuyez à nouveau sur Configurer, puis appuyez sur Générer.
  • Fermez CMake. Accédez au dossier your_opencv\build et ouvrez le fichier nommé “OpenCV.sln”. - Cela ouvrira Visual Studio. Maintenant, exécutez-le à la fois en mode Debug [![enter image description here][9]][9] et en mode Release [![enter image description here][10]][10].
  • Maintenant, dans l’explorateur de solutions en haut à droite de votre Visual Studio, sélectionnez INSTALLER projet et le construire. [![entrez la description de l’image ici][11]][11]

Hourra!! Profitez de votre OpenCV.

Ajout du répertoire d’inclusion OpenCV à la variable PATH des variables d’environnement :

  • Allez dans Propriétés système et cliquez sur Paramètres système avancés. [![entrez la description de l’image ici][12]][12]

  • Maintenant, cliquez sur Variables d’environnement » Chemin » Modifier. [![entrez la description de l’image ici][13]][13]

  • Ici, ajoutez le dossier bin situé dans votre OpenCVdir/build/install/x86/vc**/bin à cette variable. Veillez à ne pas remplacer les valeurs Path existantes.

  • Après cela, vous devez redémarrer votre système pour que les variables d’environnement changent et vous êtes maintenant prêt à partir.

[1] : https://sourceforge.net/projects/opencvlibrary/files/opencv-win/ [2] : http://docs.opencv.org/3.1.0/d3/d52/tutorial_windows_install.html#gsc.tab=0 [3] : http://www.cmake.org/cmake/resources/software.html [4] : http://i.stack.imgur.com/h9NUM.png [5] : http://i.stack.imgur.com/f8OcS.png [6] : http://i.stack.imgur.com/eDtev.png [7] : https://github.com/Itseez/opencv_contrib [8] : http://i.stack.imgur.com/j6VKr.png [9] : http://i.stack.imgur.com/sli3t.png [10] : http://i.stack.imgur.com/qfNeL.png [11] : http://i.stack.imgur.com/MTQpV.png [12] : http://i.stack.imgur.com/18Tro.png [13] : http://i.stack.imgur.com/B8Yr7.png

Quoi et pourquoi OPENCV ?

OpenCV (Open Source Computer Vision Library) est une bibliothèque de logiciels open source de vision par ordinateur et d’apprentissage automatique. Il a été conçu à des fins diverses telles que l’apprentissage automatique, la vision par ordinateur, les algorithmes, les opérations mathématiques, la capture vidéo, le traitement d’images, etc. Au fil des ans, il est devenu très populaire parmi les chercheurs et les développeurs quant à son support sur différentes plates-formes (Windows, Linux , androïd, ios). Il a également un wrapper dans divers langages de programmation renommés. En vertu du contrat de licence, il permet aux entreprises d’utiliser et de modifier le code.

La bibliothèque contient plus de 2500 algorithmes optimisés, qui ont une excellente précision en termes de performances et de vitesse. Ces algorithmes peuvent être utilisés pour détecter et reconnaître des visages, identifier des objets, classer des actions humaines dans des vidéos, suivre des mouvements de caméra, suivre des objets en mouvement, extraire des modèles 3D d’objets, produire des nuages ​​de points 3D à partir de caméras stéréo, assembler des images pour produire une haute résolution image d’une scène entière, trouver des images similaires dans une base de données d’images, supprimer les yeux rouges des images prises au flash, suivre les mouvements des yeux, reconnaître le paysage et établir des marqueurs pour le superposer avec la réalité augmentée, etc. OpenCV a des gens et une communauté formidables impliqués en tant qu’utilisateurs , développeurs et chercheurs, le nombre est supérieur à 47 000 et le nombre estimé de téléchargements dépasse 7 millions. La bibliothèque est largement dans les entreprises professionnelles, les groupes de recherche et d’autres groupes.

De nombreuses entreprises bien établies comme Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota qui utilisent la bibliothèque, il existe de nombreuses startups telles que Applied Minds, VideoSurf et Zeitera, qui utilisent largement OpenCV. Les utilisations déployées d’OpenCV couvrent une gamme allant de l’assemblage d’images de streetview, la détection d’intrusions dans la vidéo de surveillance en Israël, la surveillance de l’équipement minier en Chine, l’aide aux robots pour naviguer et ramasser des objets à Willow Garage, la détection d’accidents de noyade de piscine en Europe, l’exécution d’art interactif dans en Espagne et à New York, en vérifiant la présence de débris sur les pistes en Turquie, en inspectant les étiquettes des produits dans les usines du monde entier jusqu’à la détection rapide des visages au Japon. Il possède des interfaces C++, C, Python, Java et MATLAB et prend en charge Windows, Linux, Android et Mac OS. OpenCV se penche principalement vers les applications de vision en temps réel et tire parti des instructions MMX et SSE lorsqu’elles sont disponibles. Des interfaces CUDA et OpenCL complètes sont activement développées en ce moment. Il existe plus de 500 algorithmes et environ 10 fois plus de fonctions qui composent ou prennent en charge ces algorithmes. OpenCV est écrit nativement en C++ et possède une interface basée sur des modèles qui fonctionne de manière transparente avec les conteneurs STL.

Informations recueillies sur le site officiel

Exemple Hello world en Java

Image OpenCv lue à partir du système de fichiers en Java

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
 
public class Giris {    
    public static void main(String[] args) {
        //Load native library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        //image container object
        Mat imageArray;
        //Read image from file system
        imageArray=Imgcodecs.imread("C:\\Users\\mesutpiskin\\sample.jpg");
        //Get image with & height
        System.out.println(imageArray.rows());
        System.out.println(imageArray.cols());
    }
}

Obtenir l’image de la webcam

Affichez un flux vidéo en direct provenant d’une webcam à l’aide de la classe VideoCapture d’OpenCV avec Java, C/C++ et Python.

Java

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.videoio.VideoCapture;
 
public class Camera {
    public static void main(String[] args) {
        // Load Native Library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        // image container object
        Mat imageArray = new Mat();
        // Video device acces
        VideoCapture videoDevice = new VideoCapture();
        // 0:Start default video device 1,2 etc video device id
        videoDevice.open(0);
        // is contected
        if (videoDevice.isOpened()) {
        // Get frame from camera
            videoDevice.read(imageArray);
            // image array
            System.out.println(imageArray.toString());
            // Release video device
            videoDevice.release();
        } else {
            System.out.println("Error.");
        }
    }
}

#C++

#include "opencv2/opencv.hpp"
#include "iostream"

int main(int, char**) {
    // open the first webcam plugged in the computer
    cv::VideoCapture camera(0);
    if (!camera.isOpened()) {
        std::cerr << "ERROR: Could not open camera" << std::endl;
        return 1;
    }

    // create a window to display the images from the webcam
    cv::namedWindow("Webcam", CV_WINDOW_AUTOSIZE);

    // this will contain the image from the webcam
    cv::Mat frame;
        
    // capture the next frame from the webcam
    camera >> frame;
    
    // display the frame until you press a key
    while (1) {
        // show the image on the window
        cv::imshow("Webcam", frame);
        // wait (10ms) for a key to be pressed
        if (cv::waitKey(10) >= 0)
            break;
    }
    return 0;
}

#Python import numpy as np import cv2

# Video source - can be camera index number given by 'ls /dev/video*
# or can be a video file, e.g. '~/Video.avi'
cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()