shizhiniepan 2015-10-12 03:48 采纳率: 0%
浏览 2312

在Qt中图像的拉普拉斯变换,一运行程序就崩溃了,下面是代码,求大神看一下。

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;

}

  • 写回答

3条回答 默认 最新

  • beep_ 2015-10-12 07:42
    关注

    图像处理不是很了解,C语言略知一二,在编程中一运行程序就崩溃很可能那个地方除以0溢出了。

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料