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

问题描述

在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;

}

解决方案

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

解决方案二:

单步调试定位崩溃语句。检查下img会不会是NULL,图像格式是不是QImage::Format_ARGB32。

解决方案三:

qDebug()一下指针是否为NULL,数组访问有没有越界。

时间: 2024-12-12 04:04:09

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

在Fragment中添加了一个按钮,但是一按按钮就闪退,求大神指点。

问题描述 在Fragment中添加了一个按钮,但是一按按钮就闪退,求大神指点. package com.example.fragmentdemo; import com.example.fragmentdemo.MessageFragment;import com.example.fragmentdemo.R;import com.wifi.WifiAdmin;import com.wifi.WifiApAdmin;import android.app.Fragment;import andro

java-关于listvi中加入viewpager 求大神看下代码

问题描述 关于listvi中加入viewpager 求大神看下代码 我是写了一个viewpager 有三个页面 然后在第一个页面中加入了一个listview 然后在listview中加入一个viewpager 但是每次运行都报错 java.lang.ClassCastException: android.support.v4.view.ViewPager$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

java-easyui中设置多选框,我选择任意一个都会全选,求大神解答一下,在线等

问题描述 easyui中设置多选框,我选择任意一个都会全选,求大神解答一下,在线等 easyui中设置多选框,我选择任意一个都会全选,求大神解答一下,在线等 解决方案 不可能.只有勾选标题的那个复选框才会选中所有的记录前面的复选框 解决方案二: 你把你的checkbox 做一个循环 判断是否有勾选 只要有勾选 就把其他的也设置上 解决方案三: 既然使用easyUI 为这些多选框添加相同的一个click处理就是 $("#checkbox1,checkbox2......").click(

后序波兰数 栈-实现中序波兰数,为什么程序会总是崩掉啊?求大神指点啊。。。。已调式许久

问题描述 实现中序波兰数,为什么程序会总是崩掉啊?求大神指点啊....已调式许久 #include #include #include using namespace std; void tran()/*中序转化成后续*/ { stackoperation; stackplus; stackreplus; char letter; while(cin.get(letter)&&letter!='/n'){ if(isdigit(letter)) { cout< plus.push(l

急急急急急急!jsp中文件上传 如果文件存在如何删除原来的文件,菜鸟求大神

问题描述 急急急急急急!jsp中文件上传如果文件存在如何删除原来的文件,菜鸟求大神. 解决方案 解决方案二:换个思路,你覆盖原来的就好了,名称取得一样就行.解决方案三:一楼正解....

memcached中的server端的lru算法能不能改成lirs算法跪求大神解答

问题描述 memcached中的server端的lru算法能不能改成lirs算法跪求大神解答 memcached中的server端的lru算法能不能改成lirs算法,最近有个任务就是把memcached中lru算法改成lirs 好纠结,本身就对c不熟悉 解决方案 那估计需要你自己修改源码了. 解决方案二: 对 就是改源码 我想知道是大改还是小改 我认为很麻烦,因为item贯穿于memcached的很多地方,但是安排任务的老师认为只需要修改有lru算法那个地方,我很无语 而且让我赶快进入编程阶段,

继承EaseBaseActivity后onResume方法中 EaseUI.getInstance().getNotifier().reset();报错,求大神看是啥问题

问题描述 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.easemob.easeui.model.EaseNotifier.reset()' on a null object reference 解决方案 EaseUI.getInstance().getNotifier().reset();解决方案二:你解决了吗?

求大神求解-matlab图像局部增强程序求解

问题描述 matlab图像局部增强程序求解 求对某个文件夹中的10张图片进行局部增强,要求只增强某一小区域而保持其他部分不变的matlab程序?新手刚学matlab,求大神指教 解决方案 Matlab 求解数独的程序matlab图像缩放程序

C#编程中使用ZedGraph控件,运行程序无法直接在其他电脑上使用。

问题描述 Zedgraph控件是一个dll,在我编程过程中需要加载一下.程序编好后,将运行程序考的其他装有VS2010电脑上,用不了.不想再重新打开vs,重新加载一下.有什么其他解决办法吗?网查解决方法:使zedgraph具有同一个目录,不行:将zedgraph放到system32,不行.应用程序是Release版本也不行.求大神相助!怎么就能在其他电脑上运行编译好的应用程序就行.万分感谢! 解决方案 解决方案二:楼主问题解决了么?我也遇到同样的问题,程序打包后,只有自己电脑上安装的可以出曲线,