Está en la página 1de 2

#include "opencv2/objdetect/objdetect.

hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;


using namespace cv;

Mat ima,gray,g1,red,green,blue;
vector<Mat> rgbchannels(3);

int main(int argc, char *argv[])


{
//Slider para modificar la constante
int control1=1,control2=0;

namedWindow("Control logaritmica",WINDOW_NORMAL);
cvCreateTrackbar("low1","Control logaritmica",&control1,10);

namedWindow("Control exponencial",WINDOW_NORMAL);
cvCreateTrackbar("low2","Control exponencial",&control2,10);

while(true){
ima=imread("C:/opencv/sources/samples/data/butterfly.jpg");
namedWindow("Imagen Original",WINDOW_NORMAL);
imshow("Imagen Original",ima);

//Generar las 3 capas por f�rmula


split(ima,rgbchannels);
red=0.3*rgbchannels[2];
green=0.59*rgbchannels[1];
blue=0.11*rgbchannels[0];

//Generar escala de grises y mostrar la im�gen generada por f�rmula


gray=red+green+blue;
imshow("Imagen Escala de grises por FORMULA",gray);

//FUNCION LOGARITMICA
g1=gray.clone();
gray.convertTo(gray,CV_32F);
gray=gray*((control1/10)+1);
log(gray,gray);
convertScaleAbs(gray,gray);
normalize(gray,gray,0,255,NORM_MINMAX);
imshow("Curva de Logaritmo",gray);

//FUNCION EXPONENCIAL
g1.convertTo(g1,CV_32F);
exp(g1,g1);
g1=(g1^(control2/10));
convertScaleAbs(g1,g1);
normalize(g1,g1,0,255,NORM_MINMAX);
imshow("Curva de Exponencial",g1);

//Preguntar si se ha presionado un tecla para salir


if(waitKey(1)==27){
break;
}
}
return 0;
}

También podría gustarte