【发布时间】:2018-02-21 14:17:06
【问题描述】:
无论如何如何使用 FFTW3 中的 fftw_plan fftw_plan_dft_r2c_2d(int n0, int n1,double *in, fftw_complex *out, unsigned flags) 函数并将输入作为来自 cv::Mat 对象的数据?我当前的工作代码如下所示:
data_in = fftwf_alloc_real(width * height);
fft = fftwf_alloc_complex((width/2+1) * height);
plan_f=fftwf_plan_dft_r2c_2d( height , width , data_in, fft , FFTW_MEASURE );
// Prepare input data
for(int i = 0,k=0; i < height; ++i) {
const float* row = input.ptr<float>(i);
for(int j = 0; j < width; j++) {
data_in[k]=(float)row[j];
k++;
}
}
// Exectue fft
fftwf_execute( plan_f );
其中 data_in 是数组类型 float*,input 是 cv::Mat。我想摆脱将数据复制到 data_in 的 for 循环,而只使用 input 中已分配的数据。
【问题讨论】:
-
你想将数据从
cv::Mat复制到float[],对吧? -
我想完全避免从
cv::Mat复制数据并将它们用作函数的float*。