FFT提取图像特征
FFT提取图像特征
- 安装fft库
- C++代码
安装fft库
FFT提取特征 C++源码
在C++中,可以使用FFTW(Fastest Fourier Transform in the West)库来进行FFT操作。以下是一个简单的例子,展示如何使用FFTW进行FFT操作:
首先,你需要安装FFTW库。在Linux上,你可以通过包管理器安装,例如在Ubuntu上使用:
sudo apt-install libfftw3-dev
C++代码
#include <iostream>
#include <fftw3.h>
#include <cmath>int main() {int N = 8; // 设置样本数为8// 分配输入数组和输出数组fftw_complex *in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);fftw_complex *out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);// 创建一个FFT计划fftw_plan plan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);// 初始化输入数据(这里使用简单的1, 0, 1, 0...序列作为示例)for (int i = 0; i < N; i++) {in[i][0] = i % 2; // 实部in[i][1] = 0; // 虚部}// 执行FFTfftw_execute(plan);// 输出FFT结果for (int i = 0; i < N; i++) {std::cout << "out[" << i << "] = " << out[i][0] << " + " << out[i][1] << "i" << std::endl;}// 清理分配的内存fftw_destroy_plan(plan);fftw_free(in);fftw_free(out);return 0;
}
g++ fft.cpp -o fft -lm -lstdc++ -lfftw3
./fft
out[0] = 4 + 0i
out[1] = 0 + 0i
out[2] = 0 + 0i
out[3] = 0 + 0i
out[4] = -4 + 0i
out[5] = 0 + 0i
out[6] = 0 + 0i
out[7] = 0 + 0i