#include <stdio.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
/**************************************************************************
//傅里叶变换
//src IPL_DEPTH_8U
//dst IPL_DEPTH_64F
/**************************************************************************/
void fft2(IplImage *src, IplImage *dst)
{
IplImage *image_Re = 0, *image_Im = 0, *Fourier = 0; //实部、虚部
image_Re = cvCreateImage(cvGetSize(src), IPL_DEPTH_64F, 1); //实部
image_Im = cvCreateImage(cvGetSize(src), IPL_DEPTH_64F, 1); //虚部
Fourier = cvCreateImage(cvGetSize(src), IPL_DEPTH_64F, 2);//2 channels (image_Re, image_Im)
cvConvertScale(src, image_Re, 1, 0);// Real part conversion from u8 to 64f (double)
cvZero(image_Im);// Imaginary part (zeros)
cvMerge(image_Re, image_Im, 0, 0, Fourier);// Join real and imaginary parts and stock them in Fourier image
cvDFT(Fourier, dst, CV_D
OpenCV实现傅里叶变换
最新推荐文章于 2024-03-20 00:16:26 发布
本文档展示了如何使用OpenCV库进行傅里叶变换,首先定义了一个`fft2`函数来实现从8位无符号整数到64位浮点数的傅里叶变换,接着通过`fft2shift`函数对结果进行中心化处理。最后,通过傅里叶逆变换和一些后期处理,将处理后的图像显示出来。整个过程包括了傅里叶变换、中心化、逆变换以及图像的归一化显示。
摘要由CSDN通过智能技术生成