c++ - C++ 中 OpenCV 的 DFT 绝对值
问题描述
我正在尝试使用 OpenCV 在 C++ 中计算 DFT。我想要 DFT 的绝对值。为了计算它,我这样做:
vector<float> areas, X_mag;
cv::Mat X;
...
cv::dft(areas, X, cv::DFT_COMPLEX_OUTPUT);
区域是一个 50x1 向量,我想将区域的 DFT 的绝对值存储在 X_mag
问题是我认为没有办法直接计算绝对值,也没有找到任何直接计算绝对值的函数。
我尝试使用absdiff : 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 被认为是以这种方式迭代。
我怎样才能得到我的 50x1 DFT 的绝对值向量?
解决方案
推荐阅读
- javascript - 字符串替换 js/GAS 中的正则表达式无效量词
- javascript - 如何模拟 jest 函数并期望通过模拟结果?
- html5-video - HTML5 渐进式视频下载
- java - 如果我们只写包装代码,我们应该写自动化测试代码吗?
- magento - 当我进行编译时,我在 magento 2.2.3 中创建了一个错误
- python-3.x - 用 Pygame 绘制网格的最有效方法是什么?
- javascript - 查询大型 JSON 对象的条件
- php - 日期 POST 切换类型
- html - 无需 JavaScript 即可刷新页面的按钮
- python - 是否可以构建一个基于 Python 的 HTML 抓取工具,以返回 Steam 市场上当前最高的购买订单?