首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中用OpenCV计算密度泛函的绝对值

在C++中用OpenCV计算密度泛函的绝对值
EN

Stack Overflow用户
提问于 2021-09-27 15:03:42
回答 1查看 41关注 0票数 0

我正在尝试用OpenCV在C++中计算密度泛函。我想要DFT的绝对值。为了计算它,我这样做:

代码语言:javascript
运行
复制
vector<float> areas, X_mag; 
cv::Mat X;

...

cv::dft(areas, X, cv::DFT_COMPLEX_OUTPUT);

面积是一个50x1的向量,我想将面积密度的绝对值存储在X_mag中

问题是,我认为没有办法直接计算绝对值,我也找不到任何可以直接计算绝对值的函数。

我尝试使用std:cv::absdiff(X, cv::Scalar::all(0), X_mag);,但只有当我使用std::vector而不是cv::Mat时,它才有效。

如果我不使用DFT_COMPLEX_OUTPUT,我只能得到真实的部分,所以我不需要。

我在考虑手动计算绝对值(sqrt(Re(X)^2 + Im(X)^2),但我认为它太慢了,而且我不认为cv::Mat是这样迭代的。

如何获得50x1DFT的绝对值向量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-27 16:48:49

正如@Christoph Rackwitz所说,我们可以使用splitmagnitude

代码语言:javascript
运行
复制
vector<float> areas, X_abs;
Mat X;
Mat X_mag[2];

...

cv::dft(areas, X, cv::DFT_COMPLEX_OUTPUT);
cv::split(X, X_mag);
cv::magnitude(X_mag[0], X_mag[1], X_abs);

我们将得到X_abs中的绝对值向量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69348948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档