卷積方法我寫使用OpenCV的API來創建一個高斯核,然後將它傳遞給Conv2ByDFT函數做卷積。但程序崩潰,我不知道爲什麼。這是代碼。錯誤的高斯模糊,在openCV2.3
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);
}
這裏是主要的一些代碼()調用上述
Mat gaussianFilter = getGaussianKernel(7,2.0,CV_64F); // create Gaussian kernel
Conv2ByFFT(src,gaussianFilter,result); // do the convolution
的功能,我不知道是否有什麼不對的getGaussianKernel()函數或與我Conv2ByFFT出了問題( )功能...任何人都可以幫助我嗎?非常感謝!
什麼錯誤?它會發生什麼事? –
對不起,我沒有說清楚:P。錯誤如下:「未知函數中的OPENCV ERROR:斷言失敗(類型== CV_32FC1 ||類型== CV_32FC2 ||類型== CV_64FC1 ||類型== CV_64FC2).. \ .. \ .. \ moduels \核心的\ src \ dxt.cpp,線路1483 「和上線程序崩潰」 DFT(TMPF,TMPF,0,f.rows)」 – yvetterowe