¿Quién tiene el código fuente del procesamiento de imágenes digitales vc que se necesita con urgencia? ! Gracias
#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()
{ p>
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>}