opencvEmpezando con opencv


Observaciones

Esta sección proporciona una descripción general de qué es opencv y por qué un desarrollador puede querer usarlo.

También debe mencionar cualquier tema grande dentro de la apertura, y vincular a los temas relacionados. Dado que la Documentación para opencv es nueva, es posible que deba crear versiones iniciales de los temas relacionados.

Versiones

OpenCV 3

Versión Fecha de lanzamiento
3.2 2016-12-23
3.1 2015-12-18
3.0 2015-06-03
3.0 RC1 2015-04-23
3.0 beta 2014-11-07
3.0 alfa 2014-08-21

OpenCV 2

Versión Fecha de lanzamiento
2.4.13 2016-05-19
2.4.12 2015-07-30
2.4.11 2015-02-25
2.4.10 2014-10-01
2.4.9 2014-04-14
2.3.1 2011-08-17
2.3.0 2011-07-04
2.2.0 2010-12-05
2.1.0 2010-04-06
2.0.0 2009-10-01
1.0.0 2006-10-19

Construye e instala OpenCV desde la fuente

Esta es una guía paso a paso para instalar OpenCV 3 en un sistema Linux basado en Debian desde la fuente. Los pasos deben seguir siendo los mismos para otras distribuciones, simplemente reemplace los comandos relevantes del administrador de paquetes al instalar paquetes para la compilación.

Nota: Si no tiene ganas de perder el tiempo creando cosas o le disgusta el terminal, lo más probable es que pueda instalar OpenCV desde la GUI del administrador de paquetes Synaptic. Sin embargo, estas bibliotecas a menudo están desactualizadas.

Prepararse para la construcción

Ejecute los siguientes comandos en su terminal para instalar los paquetes requeridos:

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
 

Los siguientes paquetes son opcionales:

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

Ejecute el siguiente comando para obtener el código fuente de OpenCV y preparar la compilación:

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

Construir e instalar

Incluimos los ejemplos en la compilación, pero siéntase libre de omitirlos. También siéntase libre de establecer otras banderas y personalizar su construcción como mejor le parezca.

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

Si CMake no informó ningún error o faltaron bibliotecas, continúe con la compilación.

make -j$(nproc)
 

Si no se produjeron errores, podemos continuar con la instalación de OpenCV en el sistema:

sudo make install
 

Ahora OpenCV debería estar disponible para su sistema. Puede usar las siguientes líneas para saber dónde se instaló OpenCV y qué bibliotecas se instalaron:

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

Instalación de prueba

Primero construimos los ejemplos de C ++:

cd ~/src/opencv/samples
cmake .
make
 

Si no se produjeron errores, ejecute una muestra, por ejemplo

./cpp/cpp-example-edge
 

Si se ejecuta el ejemplo, entonces las bibliotecas de C ++ se instalan correctamente.

A continuación, prueba los enlaces de Python:

python
>> import cv2
>> print cv2.__version__
 

Si estos comandos importan OpenCV e imprimen la versión correcta sin quejarse, entonces los enlaces de Python están correctamente instalados.

Felicidades, acabas de construir e instalar OpenCV. Feliz programacion

Para Mac, consulte aquí la instalación de OpenCV en Mac OS X

Obtener imagen de webcam

Muestra un video en vivo tomado de una cámara web utilizando la clase VideoCapture de OpenCV con Java, C / C ++ y 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;
}
 

Pitón

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()
 

Primeros pasos con OpenCV 3.1 en Windows

Instalamos OpenCV 3.1.0 en Windows y empezamos. Hay dos formas de instalar OpenCV en Windows. Una es descargar el instalador y ejecutarlo. Otro es construir desde la fuente.

Esta es la forma más fácil de instalar OpenCV y comenzar. OpenCV ofrece binarios precompilados para instalar en Windows aquí . Una vez que finalice la descarga, extráigala e instálela en la ruta elegida.

ProTip: asegúrese de que su ruta OpenCV no incluya ningún espacio. Por lo tanto, es mejor si lo instala en el directorio C: \ o D: \ root

El problema con el método anterior es que no puede usar los módulos opencv_contrib. Además, no viene con todas las herramientas y bibliotecas de terceros. Por lo tanto, si desea utilizar todos estos, simplemente siga adelante.

Explicaré el mínimo mínimo para instalar OpenCV desde la fuente. Para más avanzado, refiérase aquí .

  • Instale CMake .
  • Clone la fuente de OpenCV desde https://github.com/Itseez/opencv.git en algún directorio que no tenga espacios. Vamos a referirlo como "OpenCVdir". introduzca la descripción de la imagen aquí
  • Ahora, abra CMake GUI y agregue su directorio de origen (OpenCVdir) al menú Orígenes y genere el directorio en el menú de compilación. Consejo: si no hay un directorio de compilación, cree uno en su carpeta de opencv. introduzca la descripción de la imagen aquí
  • Haga clic en Configurar y seleccione la versión del compilador de Visual Studio. Tenía Visual Studio 2013 Professional de 32 bits, así que elegí el compilador de Visual Studio 12. introduzca la descripción de la imagen aquí

Sugerencia: Puede descargar Visual Studio 2013 Professional desde aquí. Viene con 30 días de prueba + 90 días de seguimiento extendido después de iniciar sesión.

  • Presione Finalizar y CMake cargará todos los paquetes automáticamente. Puede agregar o eliminar paquetes. Presiona Configurar de nuevo.
  • Si desea compilar con módulos opencv_contrib adicionales, debe descargarlos desde aquí . Luego, extráigalos y agregue el directorio opencv_contrib / modules a su CMake como se muestra a continuación. introduzca la descripción de la imagen aquí
  • Ahora presiona Configurar nuevamente y luego presiona Generar.
  • Cerrar CMake. Vaya a la carpeta your_opencv \ build y abra el archivo denominado 'OpenCV.sln'. - Se abrirá Visual Studio. Ahora, ejecútalo en Debug introduzca la descripción de la imagen aquí modo y liberación introduzca la descripción de la imagen aquí modo.
  • Ahora, en el explorador de soluciones en la parte superior derecha de su Visual Studio, seleccione INSTALAR proyecto y compílelo. introduzca la descripción de la imagen aquí

¡¡Hurra!! Disfruta de tu OpenCV.

Agregando OpenCV include directory a la variable PATH de las Variables de Ambiente:

  • Vaya a Propiedades del sistema y haga clic en Configuración avanzada del sistema. introduzca la descripción de la imagen aquí

  • Ahora, haga clic en Variables de entorno >> Ruta >> Editar. introduzca la descripción de la imagen aquí

  • Aquí, agregue la carpeta bin ubicada en su OpenCVdir / build / install / x86 / vc ** / bin a esta variable. Tenga cuidado de no reemplazar los valores de ruta existentes.

  • Después de esto, debe reiniciar su sistema para que las variables de entorno cambien y ahora está listo para comenzar.

Hola ejemplo mundial en Java

Imagen de OpenCv leída del sistema de archivos 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());
    }
}
 

Cargar y mostrar una imagen con OpenCV

Con este ejemplo, veremos cómo cargar una imagen en color desde el disco y mostrarla utilizando las funciones integradas de OpenCV. Podemos usar los enlaces C / C ++, Python o Java para lograr esto.

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 no tiene ventanas nombradas ni equivalentes en el show en Java abierto. Utilice swing o swt para mostrar la imagen.

¿Qué y por qué OPENCV?

OpenCV (Open Source Computer Vision Library) es una biblioteca de software de visión de computadora y de aprendizaje automático de código abierto. Fue construido para varios propósitos, tales como aprendizaje automático, visión artificial, algoritmo, operaciones matemáticas, captura de video, procesamiento de imágenes, etc. Con el paso de los años, se ha vuelto muy popular entre los investigadores y desarrolladores en cuanto a su soporte en diferentes plataformas (Windows, Linux y Linux). , android, ios). También tiene envoltorio en varios lenguajes de programación de renombre. Según el acuerdo de licencia, tiene acceso para que las empresas utilicen y modifiquen el código.

La biblioteca contiene más de 2500 algoritmos optimizados, que tienen una excelente precisión en el rendimiento y la velocidad. Estos algoritmos se pueden usar para detectar y reconocer rostros, identificar objetos, clasificar acciones humanas en videos, rastrear movimientos de cámara, rastrear objetos en movimiento, extraer modelos 3D de objetos, producir nubes de puntos 3D desde cámaras estéreo, unir imágenes para producir una alta resolución imagen de una escena completa, encuentre imágenes similares de una base de datos de imágenes, elimine los ojos rojos de las imágenes tomadas con flash, siga los movimientos de los ojos, reconozca paisajes y establezca marcadores para superponerlos con realidad aumentada, etc. OpenCV cuenta con excelentes personas y comunidades involucradas como usuarios , desarrolladores e investigadores, el número es más de 47 mil y el número estimado de descargas supera los 7 millones. La biblioteca se encuentra ampliamente en empresas profesionales, grupos de investigación y otros grupos.

Muchas empresas bien establecidas como Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota que emplean la biblioteca, hay muchas empresas nuevas como Applied Minds, VideoSurf y Zeitera, que hacen un uso extensivo de OpenCV. Los usos desplegados de OpenCV abarcan desde unir imágenes de streetview, detectar intrusiones en el video de vigilancia en Israel, monitorear el equipo de la mina en China, ayudar a los robots a navegar y recoger objetos en Willow Garage, detectar accidentes de ahogamiento en piscinas en Europa, ejecutar arte interactivo en España y Nueva York, revisando las pistas en busca de escombros en Turquía, inspeccionando las etiquetas de los productos en fábricas de todo el mundo hasta la rápida detección de rostros en Japón. Tiene interfaces C ++, C, Python, Java y MATLAB y es compatible con Windows, Linux, Android y Mac OS. OpenCV se inclina principalmente hacia aplicaciones de visión en tiempo real y aprovecha las instrucciones MMX y SSE cuando están disponibles. Actualmente se están desarrollando activamente las interfaces CUDA y OpenCL. Hay más de 500 algoritmos y aproximadamente 10 veces más funciones que componen o soportan esos algoritmos. OpenCV está escrito de forma nativa en C ++ y tiene una interfaz con plantilla que funciona perfectamente con los contenedores STL.

Información recogida de la web oficial.