openCV apiを使用してガウスカーネルを作成し、それをConv2ByDFT関数に渡して畳み込みを実行します。しかし、プログラムがクラッシュし、理由がわかりません。これがコードです。
void Conv2ByFFT(const Mat& f,const Mat& g,Mat& result)
{
result.create(abs(f.rows-g.rows+1),abs(f.cols-g.cols+1),f.type());
Size dftSize;
dftSize.width = getOptimalDFTSize(f.cols + g.cols - 1);
dftSize.height = getOptimalDFTSize(f.rows + g.cols -1);
Mat tmpF(dftSize,f.type(),Scalar::all(0));
Mat tmpG(dftSize,g.type(),Scalar::all(0));
dft(tmpF,tmpF,0,f.rows);
dft(tmpG,tmpG,0,g.rows);
mulSpectrums(tmpF,tmpG,tmpF,0);
dft(tmpF,tmpF,DFT_INVERSE+DFT_SCALE,result.rows);
tmpF(Rect(0,0,result.cols,result.rows)).copyTo(result);
}
上記の関数を呼び出すためのmain()のコードを次に示します。
Mat gaussianFilter = getGaussianKernel(7,2.0,CV_64F); // create Gaussian kernel
Conv2ByFFT(src,gaussianFilter,result); // do the convolution
getGaussianKernel()関数に問題があるのか、Conv2ByFFT()関数に問題があるのかわかりません...誰か助けてもらえますか?どうもありがとう!