带有qt的FFTW C++程序崩溃
FFTW with qt C++ program crash
我尝试从具有fftw和qt的图像列表中计算时间像素向量的fft,并对所有图像的所有像素重复此过程;该向量包含[im1的pix1.1,im2的pix1.1,...imN的pix1.1],问题是当图像数量很大时程序崩溃
const int Npoints(widget.imagelistWidget->count());
fftw_complex *in, *out;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*Npoints);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*Npoints);
double resfft;
fftw_plan p;
QList<QImage*> imageList;
QImage *imagef ;
for(int k=0;k<liste.size();k++)
{
imagef = new QImage;
imagef->load(liste[k]);
imageList.append(imagef);
}
for(int i=0;i<imagef->width();i++)
{
for(int j=0;j<imagef->height();j++)
{
for(int k=0;k<liste.size();k++)
{
imagef =imageList.at(k);
QRgb pixelfft=imagef->pixel(i,j);
double moyp= qGray(pixelfft);
in[k][0] = moyp;
in[k][1] = 0.0;
}
p = fftw_plan_dft_1d(Npoints, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(p);
//resultat
QVector<qreal> realV;
QVector<qreal> imgV;
for (int s = 0; s < Npoints; s++)
{
realV.append(out[s][0]);
imgV.append(out[s][1]);
}
for(int l=0;l<liste.size();++l)
{
resfft = sqrt((realV[l] * realV[l]) + (imgV[l] * imgV[l]));
imagef=imageList.at(l);
imagef->setPixel(i,j,qGray(qRgb(resfft,resfft,resfft)));
}
}
}
我认为这就是@bibi的评论所要表达的,但这部分看起来是错误的:
for(int i=0;i<imagef->width();i++)
{
for(int j=0;j<imagef->height();j++)
{
for(int k=0;k<liste.size();k++)
{
imagef =imageList.at(k);
QRgb pixelfft=imagef->pixel(i,j);
double moyp= qGray(pixelfft);
in[k][0] = moyp;
in[k][1] = 0.0;
}
您的循环似乎顺序错误。 当您调用 width
和 height
时,您不会在内部循环中的当前映像上调用它们。 你可能想要的是这个:
for(int k=0;k<liste.size();k++)
{
//Get the current image from the list
imagef = imageList.at(k);
//Loop over every pixel in the image
for(int i=0;i<imagef->width();i++)
{
for(int j=0;j<imagef->height();j++)
{
QRgb pixelfft=imagef->pixel(i,j);
double moyp= qGray(pixelfft);
in[k][0] = moyp;
in[k][1] = 0.0;
}
}
/*...*/
相关文章:
- 程序崩溃并显示"std::out_of_range"错误
- 试图创建流或fopen时程序崩溃
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 如何找出应用程序崩溃的原因 - Win 10 LTSB
- 操纵安卓相机的深度图导致应用程序崩溃
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- DLL Made with CMake 使程序崩溃
- 程序崩溃使用boost::asio
- 调用 free() 有时会导致程序崩溃
- 邮件加密程序崩溃
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- For 循环在尝试读取数组 c++ 时程序崩溃
- 即使有 0 个错误,Getter 似乎也会使程序崩溃
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 无法访问的代码如何导致我的程序崩溃?
- 矢量迭代器在尝试调用函数时使我的程序崩溃
- QCompleter set模型使应用程序崩溃
- 使用唯一指针调用函数会使我的程序崩溃
- 删除SDL_PollEvent时程序崩溃