如何存储复数

时间:2014-12-01 12:16:22

标签: c++ opencv matrix

问题是四重变换(cv :: dft)一个带有四个描述符的信号。所以垫子应该是复数:(

但我的问题是如何制作复杂数字的垫子? 请帮我找一个示例或其他任何显示如何将复数(RE + IM)存储到垫子的示例?

有没有办法使用合并?

  

merge()

2 个答案:

答案 0 :(得分:2)

我找到了答案:

我认为您可以在此处使用merge()功能,请参阅 Documentation

它说:Composes a multi-channel array from several single-channel arrays. 参考:How to store complex numbers in OpenCV matrix?

答案 1 :(得分:2)

查看opencv repo中的好dft sample,同时查看dft tutorial

所以,如果你有一个Mat真实和一个Mat imag(两者都是CV_32FC1类型):

Mat planes[] = {real,imag};
Mat complexImg;
merge(planes, 2, complexImg); // complexImg is of type CV_32FC2 now

dft(complexImg, complexImg);

split(complexImg, planes);
// real=planes[0], imag=planes[1];