【发布时间】:2011-10-08 20:47:33
【问题描述】:
谁能告诉我 emgucv 2.3 中是否存在用于查找图像傅立叶变换的内置函数?
提前致谢
【问题讨论】:
标签: emgucv
谁能告诉我 emgucv 2.3 中是否存在用于查找图像傅立叶变换的内置函数?
提前致谢
【问题讨论】:
标签: emgucv
来自我的回答Fourier Transform + emgucv
你所追求的功能是 CvInvoke.cvDFT 它在技术上调用 opencv 方法,但它应该是你所追求的
这是从 cvDFT 中分离虚部和实部的代码:
Image<Gray, float> image = new Image<Gray, float>(open.FileName);
IntPtr complexImage = CvInvoke.cvCreateImage(image.Size, Emgu.CV.CvEnum.IPL_DEPTH.IPL_DEPTH_32F, 2);
CvInvoke.cvSetZero(complexImage); // Initialize all elements to Zero
CvInvoke.cvSetImageCOI(complexImage, 1);
CvInvoke.cvCopy(image, complexImage, IntPtr.Zero);
CvInvoke.cvSetImageCOI(complexImage, 0);
Matrix<float> dft = new Matrix<float>(image.Rows, image.Cols, 2);
CvInvoke.cvDFT(complexImage, dft, Emgu.CV.CvEnum.CV_DXT.CV_DXT_FORWARD, 0);
//The Real part of the Fourier Transform
Matrix<float> outReal = new Matrix<float>(image.Size);
//The imaginary part of the Fourier Transform
Matrix<float> outIm = new Matrix<float>(image.Size);
CvInvoke.cvSplit(dft, outReal, outIm, IntPtr.Zero, IntPtr.Zero);
//Show The Data
CvInvoke.cvShowImage("Real", outReal);
CvInvoke.cvShowImage("Imaginary ", outIm);
干杯,
克里斯
【讨论】: