我从dft
的结果中获得了2个通道Mat,我想将它分成实部和虚部。但是,在OpenCV中使用split
函数时,它会在拆分后给出一些错误。
cv::dft(fft2u_in,fft2u_in);
cv::Mat fftImg[2];
cv::split(fft2u_in,fftImg);
std::cout<<cv::sum(fft2u_in)<<std::endl;
std::cout<<cv::sum(fftImg[0])<<std::endl;
std::cout<<cv::sum(fftImg[1])<<std::endl;
输出结果为:
[3.39149e+08, 2.82766, 0, 0] //sum before split
[3.39149e+08, 0, 0, 0] //sum of real part after split
[11.1087, 0, 0, 0] //sum of imag after split
实部相等,而虚部有巨大误差。我不知道为什么。是因为Mat
类型更改还是其他任何内容?
此外,与在Matlab中执行dft
相比,opencv计算的fft2
几乎没有错误。这是否可以接受,有什么方法可以让它们相同吗?感谢。