Red de conocimientos turísticos - Información de alquiler - ¿Quién tiene el código fuente del procesamiento de imágenes digitales vc que se necesita con urgencia? ! Gracias

¿Quién tiene el código fuente del procesamiento de imágenes digitales vc que se necesita con urgencia? ! Gracias

Te damos un sobel para encontrar bordes y degradados. Si necesitas algo, por favor contáctame.

#Incluir "cxcore.h"

#Incluir "highgui.h"

# incluir ltcmath gt

#pragma comentario ( lib, "cv.lib")

#pragma comment(lib, "highgui.lib")

#pragma comment(lib, "cxcore.lib")

#Define umbral 150

IplImage * src//imagen original

IplImage * tar//nuevo gráfico generado después de la detección de bordes

IplImage*grey; //Mapa gris

//operador sobel

int Func_Sobel(IplImage *src, IplImage* tar, int limit)

{

int sobelmask1[3][3], Máscara de Sobel 2[3][3];

//Plantilla horizontal

Máscara de Sobel 1[0][0]= -1 ; //{-1, 0, 1, -2, 0, 2, -1, 0, 1}

Máscara de Sobel 1[0][1]=-2;

Máscara de Sobel 1[0][1]=-2;

p>

Máscara de Sobel 1[0][2]=-1;

Máscara de Sobel 1[1 ][0]= 0;

Máscara de Sobel 1[1] [1]= 0;

Máscara de Sobel 1[1][2]= 0;

Máscara de Sobel 1[2][0]= 1;

Máscara de Sobel 1[2][1]= 2;

Máscara de Sobel 1[2][2]= 1;

//Plantilla vertical

Máscara de Sobel 2[0][0]=-1; //{-1,-2,-1,0,0,0; ,1,2,1};

Máscara de Sobel 2[0 ][1]= 0;

Máscara de Sobel 2[0][2]= 1;

Máscara de Sobel 2[1][0]=-2;

Máscara de Sobel 2[1][1]= 0;

Máscara de Sobel 2[1][2 ]= 2;

Máscara de Sobel 2[2][0] =-1;

Máscara de Sobel 2[2][1]= 0;

Máscara de Sobel 2[2][2]= 1;

int H = src- gt;

int W = src- gt; >int i, j, h, w, temp1, temp2

for(h = 1; h lth-1; h )

{

for( w = 1; w ltw-1; w )

{

temp 1 = temp 2 = 0;

for(I = 0;ilt3;i )

{

for(j = 0; j lt3; j )

{

temp 1 =(src- gt; imageData (h-1 I)* src- gt; paso de ancho)[(w- 1 j)]* Máscara de Sobel 1[I][j];

temp 2 =(src- gt; imageData (h-1 I)* src- gt;

paso de ancho)[(w-1 j)]* Máscara de Sobel 2[I][j];

}

}

Doble k = sqrt( temp 1 * temp 1 temp 2 * temp 2);

if(k gt; límite)

{

(tar->;imageData target- gt ;width step * h)[w]=(uchar)255; //La conversión de valor fijo a variable requiere una conversión forzada del tipo de datos.

}

Otros

(tar->;imageData tar- gt;ancho paso * h)[w]=(uchar)0;

}

}

Devuelve 0;

}

//Obtener imagen en escala de grises

void Func _ GetGrayImage(IPL image * src, IplImage *tar)

{

int H = src- gt

int W = src - gt; ancho;

int w, h;

para(h = 0; h lth; h )

{

para (w = 0;w ltw;w)

{

(tar->;imageData h * tar- gt;paso de ancho)[w]=(unsigned char)( ( char sin firmar)(src- gt; imageData h * src- gt; paso de ancho) [3 * w 2] * 0.136 (char sin firmar) (src- gt; imageData h * src- gt; paso de ancho) [3 * w 1 ]* 0,514 (carácter sin firmar)(src- gt; imageData h * src- gt; paso de ancho)[3 * w]* 0,350);

}

}

}

void Func_ShowWindow()

{

CvNamedWindow("original", 0); // Función de biblioteca CV, función de definición de ventana, Definición de ventana, utilizada para la siguiente visualización.

CvShowImage("imagen original", src); // función de biblioteca cv, la barra de título es "imagen original" y se muestra la imagen a la que apunta src.

CvNamedWindow("Imagen en escala de grises", 0);

CvShowImage(" gris ");

CvNamedWindow("Imagen de detección de bordes", 0); /p>

CvShowImage("imagen de detección de bordes", tar

}

void Func_SaveWindow()

{

< p); >CvSaveImage("Grayscale.jpg", gris);

CvSaveImage("Imagen de detección de bordes.

jpg", tar);

}

void Func_CloseWindow()

{

cvReleaseImage( amp; src);

cvReleaseImage(amp;gris);

cvReleaseImage(amp;tar);

CvDestroyWindow(" original ");

CvDestroyWindow("gris mapa de grados");

CvDestroyWindow("mapa de detección de bordes");

}

void main()

{

if ( (src=cvLoadImage("test.bmp "))

{

tar = cvCreateImage(cvSize(src- gt; ancho, src- gt; altura), IPL_DEPTH_8U, 1);

gray = cvCreateImage(cvSize(src- gt; ancho, src- gt; altura), IPL_DEPTH_8U,

Func_GetGrayImage(src, gray);

Func_Sobel(grey, tar, umbral); //El umbral predeterminado es 150.

func _ ShowWindow()

Func_SaveWindow();

cvWaitKey(100000);

func _ cerrar ventana(); p>}