Función de escala de tamaño de procesamiento de imágenes OpenCV dopyrdown
Primero realice el escalado de grises en la imagen RGB original.
Luego use cvPyrDown() para crear una imagen con la mitad de la altura y la mitad del ancho de la imagen de entrada.
Finalmente, se genera una imagen de un solo canal (escala de grises) utilizando la detección de bordes Canny.
Entorno: WIN7 32bits VS2010 OpenCV2.2.0
El código es el siguiente:
#include "stdafx.h"
# incluir "cv .h"
#include lt;cxcore.hgt;
#include lt;cxcore.hgt;. highgui.hgt ;
/Primera función: función de procesamiento de escala
IplImage*doPyrDown(IplImage*in, int filter=IPL_GAUSSIAN_5x5){
afirmar (in- gt; ancho2 ==0 amp; in-gt; altura2==0);
IplImage* out=cvCreateImage(
cvSize(in-gt; ancho/ 2, in- gt ; altura/2),
in-gt; profundidad,
in-gt; nChannels
); largo y la mitad del ancho, la misma profundidad y el mismo número de canales
cvPyrDown(in, out
return(out)
}
// Segunda función: Detección de bordes Canny
IplImage* doCanny(IplImage* in, doble umbral bajo, doble umbral alto, doble apertura){
if( in -gt;nChannels!=1)
return(0); //Canny solo puede manejar imágenes en escala de grises
IplImage* out = cvCreateImage(
cvGetSize ( en ),
in-gt.profundidad, //IPL_DEPTH_8U,
1);
cvCanny (entrada, salida, umbral bajo, umbral alto, apertura) ;
// El segundo y tercer parámetro de la función son dos umbrales.
Se utiliza un umbral pequeño para controlar las conexiones de los bordes y un umbral grande para controlar la segmentación inicial de los bordes fuertes
return( out
}; p>int main( int argc, char** argv ){
cvNamedWindow("Ejemplo RGB", CV_ WINDOW_AUTOSIZE);
cvNamedWindow("Ejemplo gris", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Ejemplo Pyr", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Ejemplo Canny", CV_WINDOW_AUTOSIZE
IplImage* img_rgb = cvLoadImage("cube.jpg); "); //carga la imagen RBG original
IplImage*;
cvShowImage("Ejemplo RGB", img_rgb);
cvShowImage ("Ejemplo RGB", img_rgb ); //muestra la imagen RBG original
out = cvCreateImage( cvSize( img_rgb-gt; ancho, img_rgb-gt; alto), img_rgb-gt; profundidad, 1);
cvCvtColor(img_rgb, out, CV_BGR2GRAY); // Convierte la imagen cargada en una imagen en escala de grises
cvShowImage("Example Gray", out); /p>
out = doPyrDown( out );
out = doPyrDown( out ); // Realiza el proceso de reducción dos veces
cvShowImage("Ejemplo Pyr", out ) ; // Mostrar imagen de contracción
out = doCanny(out, 10, 100, 3); // Realizar detección de bordes Canny
cvShowImage("Ejemplo Canny", out); / Mostrar imagen de detección de bordes Canny
cvWaitKey(0);
cvReleaseImage(amp;out);
cvDestroyWindow("Ejemplo gris");
cvDestroyWindow ("Ejemplo Pyr");
cvDestroyWindow("Ejemplo Canny");
}
cvDestroyWindow("Ejemplo Pyr");
cvDestroyWindow("Ejemplo Canny");
}