La Red de Conocimientos Pedagógicos - Currículum vitae - ¡El problema de diferencia de segundo orden de Opencv es urgente!

¡El problema de diferencia de segundo orden de Opencv es urgente!

#includelt;iostreamgt;

#includelt;cv.hgt;

#includelt;highgui.hgt;

usando?namespace ?std;

#define?MGETP1(x,y,z,ch,im,type)?(((tipo*)(im-gt;imageData (y)*im-gt;widthStep) )[ch*(x) z])

int?main(){string?s;

s=/*Completa la ruta de la imagen tú mismo*/;

IplImage*?sim=cvLoadImage(s.c_tr());

IplImage*?resx=cvCreateImage(cvGetSize(sim), IPL_DEPTH_32F, 3);

IplImage*?resy=cvCreateImage(cvGetSize(sim), IPL_DEPTH_32F, 3);

int?x, y

for(x=2; xlt; sim-gt; ancho-2; x )

{

for(y=2; ylt; sim-gt; altura-2; y )

{

int?x0, x1, x2, y0, y1, y2;

x0=MGETP1(x-1, y, 0, 3, sim, uchar);

x1=MGETP1(x, y, 0, 3, sim, uchar);

x2=MGETP1(x 1, y, 0, 3, sim, uchar); MGETP1(x,y,0,3,resx,float)=x0 x2-2*x1;

x0=MGETP1(x,y-1,0,3,sim,uchar);

p>

x1=MGETP1(x,y,0,3,sim,uchar);

x2=MGETP1(x,y 1,0,3,sim,uchar );

MGETP1(x,y,0,3,resy,float)=y0 y2-2*y1;

x0=MGETP1(x-1,y,0, 3,sim,uchar );

x1=MGETP1(x, y, 0, 3, sim, uchar

x2=MGETP1(x 1, y, 0, 3); , sim, uchar) ;

MGETP1(x,y,0,3,resx,float)=x0 x2-2*x1;

x0=MGETP1(x,y- 1,1,3 , sim, uchar);

x1=MGETP1(x, y, 1, 3, sim, uchar);

x2=MGETP1(x, y 1); , 1, 3, sim, uchar);

MGETP1(x, y, 1, 3, resy, float)=y0 y2-2*y1;

x0=MGETP1( x-1, y , 2, 3, sim, uchar);

x1=MGETP1(x, y, 2, 3, sim, uchar);

x2=MGETP1( x 1, y, 2, 3, sim, uchar);

MGETP1(x, y, 2, 3, resx, float)=x0 x2-2*x1;

x0=MGETP1(x, y

-1, 2, 3, sim, uchar);

x1=MGETP1(x, y, 2, 3, sim, uchar);

x2=MGETP1(x, y); 1, 2, 3, sim, uchar);

MGETP1(x, y, 2, 3, resy, float)=y0 y2-2*y1;

}

}

cvShowImage("x2Diff",?resx);

cvShowImage("y2Diff",?resy);

cvWaitKey() ;

cvReleaseImage(amp; resx);

cvReleaseImage(amp; resy);

cvReleaseImage(amp; sim);

return?0;

}

Tienes que normalizar la diferencia de segundo orden para que esté entre 0-255 antes de poder comerlo~