【问题标题】:Fourier Transform + emgucv傅里叶变换 + emgucv
【发布时间】:2011-10-02 20:03:38
【问题描述】:

谁能告诉我这段代码有什么问题...

基本上我正在尝试计算图像的 dft 并将其显示为我的屏幕上的图像。

Image<Gray, float> GreyOriginalImage = new Image<Gray, float>(strFileName);
Matrix<float> imageMat = new Matrix<float>( CvInvoke.cvGetOptimalDFTSize( GreyOriginalImage.Rows ) , CvInvoke.cvGetOptimalDFTSize( GreyOriginalImage.Cols ) );

GreyOriginalImage.CopyTo( imageMat.GetSubRect( GreyOriginalImage.ROI ) );
CvInvoke.cvDFT( imageMat , imageMat , Emgu.CV.CvEnum.CV_DXT.CV_DXT_FORWARD , imageMat.Rows );

GreyFourierImage = new Image<Gray, float>( imageMat.Rows , imageMat.Cols );
imageMat.CopyTo( GreyFourierImage );

ImageBox2.Image = GreyFourierImage;
imageBox2.Show();

问题是代码在执行时挂起,没有显示图像....

我正在使用带有 emgu cv 的 Visual Studio 2010。

【问题讨论】:

    标签: fft emgucv


    【解决方案1】:

    好吧,我已经检查了您的代码并对其进行了调试,问题所在:

    imageMat.CopyTo( GreyFourierImage );
    

    您正在尝试将作为 float[,] 数组的 imageMat 复制到图像 float[,,*] 我相信您可以弄清楚这一点只是不起作用,这就是程序挂起的原因。

    这是从 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);
    

    干杯,

    克里斯

    【讨论】:

    • 嗨,经过一番挖掘和编辑,我找到了解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2011-07-12
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多