OpenCV Stitching

La técnica de stitching permite generar imágenes panorámicas o imágenes de un espacio amplio  a partir de un conjunto de imágenes que representan porciones pequeñas de la escena que deseamos generar. 

image

En OpenCV 3.x el módulo stitching contiene todo lo necesario para realizar esta tarea, si lo utilizamos de una manera simple solo debemos crear un objeto cv::Stitcher, indicar el conjunto de imágenes a procesar y el método que deseamos utilizar.

vector<Mat> imgs;

imgs.push_back(imread("stitching/imagen1.jpg"));
imgs.push_back(imread("stitching/imagen2.jpg"));

Mat pano;
Ptr<Stitcher> stitcher = Stitcher::create(Stitcher::PANORAMA, false);
Stitcher::Status status = stitcher->stitch(imgs, pano);

Stitcher::create(mode, use_gpu) crea el objeto Stitcher necesario, este es creado usando la configuración por defecto, mode establece el modo que deseamos utilizar, PANORAMA si se trata de un conjunto de imágenes alineadas una al lado de la otra, SCANS si el conjunto de imágenes esta disperso, use_gpu establecido a true indica que se utilizará la aceleración por GPU si esta disponible.

pano

Si deseas ver un ejemplo más complejo de la técnica de stitching con OpenCV puede ver en la carpeta de ejemplos el archivo: opencv/samples/cpp/stitching_detailed.cpp

Puedes encontrar imágenes de prueba en la carpeta: opencv stitching test images.

Código en GitHub: OpenCV Image Stitch

Comentarios

Entradas populares de este blog

Conectar SQL Server con Java

Gauss Seidel y Jacobi

Entrenar OpenCV en Detección de Objetos

Procesamiento de imágenes en OpenCV

Acceso a la webcam con OpenCV