void MainWindow::LT()
{
QImage *SobelImage=new QImage(img->width(), img->height(),QImage::Format_ARGB32);
int width=img->width(),height=img->height();
int pixelNum=width*height;
int i,j,k,l;
float rResult,gResult,bResult;
float laplace[9]={0,-1,0,-1,5,-1,0,-1,0};
QRgb pixelOld[pixelNum],pixelTemp1[pixelNum];
int rtmp,gtmp,btmp;
memset(pixelTemp1,0,pixelNum);
QRgb tmpRgb;
for(j=0;j
{
for(i=0;i
{
tmpRgb=img->pixel(i,j);
pixelOld[j*width+i]=tmpRgb;
}
}
for(j=1;j
{
for(i=1;i
{
rResult=0;
gResult=0;
bResult=0;
for(k=0;k
{
for(l=0;l
{
rResult+=qRed(pixelOld[(j-1+k)*width+(i-1+l)])*laplace[k*3+l];
gResult+=qGreen(pixelOld[(j-1+k)*width+(i-1+l)])*laplace[k*3+l];
bResult+=qBlue(pixelOld[(j-1+k)*width+(i-1+l)])*laplace[k*3+l];
}
}
rResult=(float)fabs(rResult);
gResult=(float)fabs(gResult);
bResult=(float)fabs(bResult);
if(rResult>255)
{
rtmp=255;
}
else
rtmp=(int)(rResult+0.5);
if(gResult>255)
gtmp=255;
else
gtmp=(int)(gResult+0.5);
if(bResult>255)
btmp=255;
else
btmp=(int)(bResult+0.5);
// pixelTemp1[j*width+i]=qRgb(rtmp,gtmp,btmp);
}
}
for(j=0;j
{
for(i=0;i
{
SobelImage->setPixel(i,j,qRgb(rtmp,gtmp,btmp));
}
}
label->setPixmap(QPixmap::fromImage(*SobelImage));
// delete img;
// delete[] pixelTemp1;
}