ImagenImagenImagenImagen
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Instalando y compilando Opencv 3.1 con VS2015

Postea aqui toda la parte de programación del lenguaje C, C++, C#...

Moderador: Junta Directiva

Responder
Avatar de Usuario
fusion
Usuario Avanzado
Usuario Avanzado
Mensajes: 387
Registrado: Mar Oct 09, 2007 2:12 pm
Nombre: Javier Lopez Segura
Ubicación: Madrid
Contactar:

Instalando y compilando Opencv 3.1 con VS2015

Mensaje por fusion » Lun May 09, 2016 4:45 pm

Me ha costado lo suyo, y lo he hecho de la iguiente forma:

Me he bajado la version windows que es la que uso, he abierto el proyecto y he compilado en modo x64 tanto en modos Debug y Release saliendo todo ok, entonces he copiado el directorio del proyecto "include" (el que incluye D:\OpenCV31\include\opencv2\imgproc, etc...) en d:\openVC31\include
Despues todos los .lib tanto los del modo release como los de modo debug en D:\OpenCV31\lib
Despues todas las dlls tanto las de modo debug como release en D:\OpenCV31\bin

Entonces abro el proyecto para ver las propiedades y he hecho:

En todas las configuraciones (debug y release):
Proyecto > properties > C/C++ > general > Additional Include directories: D:\OpenCV31\include
Linker > General > Additional Library Directories: D:\OpenCV31\lib
Linker > Input > Additional dependencies:

Modo release:
opencv_core310.lib
opencv_highgui310.lib
opencv_imgproc310.lib
opencv_imgcodecs310.lib

Modo debug:

opencv_core310d.lib
opencv_highgui310d.lib
opencv_imgproc310d.lib
opencv_imgcodecs310d.lib

Luego a la "Environment variable" path he añadido D:\OpenCV31.lib

OJO!! hay que incluir imgcodecs.hpp pues en caso contrario no puedes leer ficheros de imagenes pues la funcion imread ha sido movida a imgcodecs.hpp desde la version 2.4.

Ejemplo:

Código: Seleccionar todo

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgcodecs/imgcodecs.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>
#include <string>

typedef unsigned char uchar;
using namespace cv;
using namespace std;



#define NCALLE 8
char calles[NCALLE][100]={
	"amsterdam.jpg",
	"madrid.jpg",
	"madrid1.jpg",
	"JesusM1.jpg",
	"JesusM2.jpg",
	"Mexico.jpg",
	"Ferraz.jpg",
	"Mayor.jpg"};

//Ver hoja excel: "Exposure saturation.xlsx". Ideal contrast=saturation=1.45 o mejor 1.50
//exposure y brightness=0.0 no afectan
void applyLevels(Mat imagen, double exposure, double brightness, double contrast, double saturation);
void applyLevels(Mat imagen1,Mat imagen2, double exposure, double brightness, double contrast, double saturation); 


int main(int, char**)
{
	printf("Inicio\n");
    namedWindow("Ventana", 1);
	
	/// Matrices to store images
	Mat frame1,frame2,frame3,frame4; 

	char fichero1[200];
	strcpy(fichero1,"data/");strcat(fichero1,"72.jpg");
	string fichero(fichero1);

	//frame1=cvLoadImageM(fichero, CV_LOAD_IMAGE_COLOR );
	frame1 = imread(fichero, IMREAD_COLOR);  //cvLoadImageM(fichero, CV_LOAD_IMAGE_COLOR);

	if( !frame1.data ) { printf("Error loading src1 \n"); getchar();getchar();return -1; }
	long w2=800,h2=w2*frame1.rows/frame1.cols;//800 pixels de ancho
	resize(frame1, frame2, Size(w2, h2), 0, 0, INTER_CUBIC);
	frame3=frame2.clone();//para cojer el mismo tamaño
	frame4=frame2.clone();

	double exposure=0.0,brightness=0.0,contrast=1.0,saturation=1.0;
	int i_expos,i_brigh,i_contr,i_satur;
	i_expos=0;i_brigh=0;i_contr=50;i_satur=50;
    createTrackbar("Exposure", "Ventana", &i_expos, 200);
    createTrackbar("Brigness", "Ventana", &i_brigh, 200);
    createTrackbar("Contrast", "Ventana", &i_contr, 100);
    createTrackbar("Saturate", "Ventana", &i_satur, 200);

	while(true)
	{
		exposure  =0.02*i_expos;
		brightness=0.02*i_brigh;
		contrast  =i_contr/50.0;
		saturation=i_satur/50.0;
		applyLevels(frame2,frame3,exposure,brightness,contrast,saturation);	
		//frame3=frame2.clone();
		//applyLevels(frame3,exposure,brightness,contrast,saturation);	
           //show the brightness and contrast adjusted image
        imshow("Ventana", frame3);

        // Wait until user press some key for 50ms
        int iKey = waitKey(50);
        //if user press 'ESC' key
        if (iKey == 27)
        {
			break;
        }
     }
	printf("\nFIN\n exposure=%lg \tbrightness=%lg \tcontrast=%lg \tsaturation=%lg",exposure,brightness,contrast,saturation);
	getchar();getchar();

	return 0;
}

//Ver hoja excel: "Exposure saturation.xlsx"
//Se recomienda contraste=saturacion=1.45 
void applyLevels(Mat imagen, double exposure, double brightness, double contrast, double saturation)
{
	uchar *rgb=imagen.data;
	long  step=imagen.step;
	long height=imagen.rows;
    double exposureFactor   = pow(2.0, exposure);
    double brightnessFactor = brightness / 10.0;
    double contrastFactor   = contrast > 0.0 ? contrast : 0.0;
    double saturationFactor = 1.0f - saturation;

    double f01 = exposureFactor / 255.0 * contrastFactor;
    double f02 = 0.5f * (1.0f - contrastFactor);

    long nPixel = step * height;
    for(long pixelIndex = 0; pixelIndex < nPixel; pixelIndex+=3)
    {
        double R = rgb[pixelIndex];
        double G = rgb[pixelIndex+1];
        double B = rgb[pixelIndex+2];

        R = R * f01 + f02;
        G = G * f01 + f02;
        B = B * f01 + f02;

        double f03 = ((R * 0.3) + (G * 0.59) + (B * 0.11)) * saturationFactor + brightnessFactor;

        R = (R * saturation + f03) * 255.0;
        G = (G * saturation + f03) * 255.0;
        B = (B * saturation + f03) * 255.0;

        R = R > 255.0 ? 255.0 : R < 0.0 ? 0.0 : R;
        G = G > 255.0 ? 255.0 : G < 0.0 ? 0.0 : G;
        B = B > 255.0 ? 255.0 : B < 0.0 ? 0.0 : B;

		rgb[pixelIndex  ]=(uchar) R;
		rgb[pixelIndex+1]=(uchar) G;
		rgb[pixelIndex+2]=(uchar) B;
    }
}


void applyLevels(Mat imagen1,Mat imagen2, double exposure, double brightness, double contrast, double saturation)
{
	uchar *rgb1=imagen1.data;
	uchar *rgb2=imagen2.data;
	long  step=imagen1.step;
	long height=imagen1.rows;
	if ( (height!=imagen2.rows) || (step!=imagen2.step) )
	{
		printf("\nError en applyLevels() imagen1 size != imagen2 size");getchar();getchar();return;
	}
    double exposureFactor   = pow(2.0, exposure);
    double brightnessFactor = brightness / 10.0;
    double contrastFactor   = contrast > 0.0 ? contrast : 0.0;
    double saturationFactor = 1.0f - saturation;

    double f01 = exposureFactor / 255.0 * contrastFactor;
    double f02 = 0.5f * (1.0f - contrastFactor);

    long nPixel = step * height;
    for(long pixelIndex = 0; pixelIndex < nPixel; pixelIndex+=3)
    {
        double R = rgb1[pixelIndex];
        double G = rgb1[pixelIndex+1];
        double B = rgb1[pixelIndex+2];

        R = R * f01 + f02;
        G = G * f01 + f02;
        B = B * f01 + f02;

        double f03 = ((R * 0.3) + (G * 0.59) + (B * 0.11)) * saturationFactor + brightnessFactor;

        R = (R * saturation + f03) * 255.0;
        G = (G * saturation + f03) * 255.0;
        B = (B * saturation + f03) * 255.0;

        R = R > 255.0 ? 255.0 : R < 0.0 ? 0.0 : R;
        G = G > 255.0 ? 255.0 : G < 0.0 ? 0.0 : G;
        B = B > 255.0 ? 255.0 : B < 0.0 ? 0.0 : B;

		rgb2[pixelIndex  ]=(uchar) R;
		rgb2[pixelIndex+1]=(uchar) G;
		rgb2[pixelIndex+2]=(uchar) B;
    }
}



Avatar de Usuario
fusion
Usuario Avanzado
Usuario Avanzado
Mensajes: 387
Registrado: Mar Oct 09, 2007 2:12 pm
Nombre: Javier Lopez Segura
Ubicación: Madrid
Contactar:

Re: Instalando y compilando Opencv 3.1 con VS2015

Mensaje por fusion » Mié Ago 24, 2016 1:48 pm

Aprovecho para poner muy resumido como se instala opencv2.4.xx, pues me parece que es algo mas ligero:

1. Bajarse Opencv 2.4.13 de sourceforge y descomprimir
2. Creo c:\OpenCV2.4 y pego desde el downloads\opencv\build\include al c:\OpenCV2.4\include todo el contenido (si no saldrán errores de que no se encuentra el highgui.hpp o el core_c.h)
3. Idem con directorio downloads\opencv\build\x64 al c:\OpenCV2.4\x64
4. Añadir a variable de entorno PATH C:\opencv2.4\x64\vc12\bin (rearrancar el VS)

5. En el visual studio 2013 Crear proyecto vacio. Abrir Proyecto (all configurations y x64) > properties > y añadir:
C/C++ > general > Additional Include directories: c:\OpenCV2.4\include\opencv2;c:\OpenCV2.4\include\opencv;c:\OpenCV2.4\include
Linker > General > Additional Library Directories: c:\OpenCV2.4\x64\vc12\lib (ó c:\OpenCV2.4\Win32\vc12\lib si el proyecto fuera Win32)
Linker > Input > Additional dependencies: opencv_core2413.lib opencv_highgui2413.lib ó opencv_core2413d.lib opencv_highgui2413d.lib

Añadir al c++ los headers:

#include <opencv.hpp>
#include <highgui.hpp>

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados