c++ - 如何为 SIFT 关键点 OpenCV 获得正确的 Octave
问题描述
我正在尝试使用 OpenCV SIFT 关键点检测。问题是我得到了奇怪的八度音阶。我查了一下,结果发现它是一组音阶、层和八度音阶。
所以我在这里添加了拆包
void unpackSIFTOctave(const KeyPoint& kpt, int& octave, int& layer, float& scale)
{
octave = kpt.octave & 255;
layer = (kpt.octave >> 8) & 255;
octave = octave < 128 ? octave : (-128 | octave);
scale = octave >= 0 ? 1.f/(1 << octave) : (float)(1 << -octave);
}
问题是现在,我得到从 -1 到 4 的值。我想要 3 个八度音阶,而nOctaveLayers参数没有帮助。有谁知道如何从 0 --> 2 获得八度音阶?
解决方案
推荐阅读
- c# - 出口后浮动上升较慢
- python - Python 和 Selenium 访问保存的网页
- android-studio - 如何在片段中的 recyclerView 上打开不同的活动?
- php - EasyAdmin 3:OneToMany 字段名称未显示在主页上
- flutter - 我如何制作一个带有监听器颤动的动态控制器
- javascript - 内部服务器错误(我遵循了这封信的教程,但我仍然收到 2 个错误)
- nsis - 如何在 NSIS 中以管理员权限在 CMD 中运行命令?
- elasticsearch - 当我在我的 kafka 源连接器配置中使用“output.json.formatter”时,Mongo Elasticsearch Sink 连接器不起作用
- css - SVG 动画中的 % 单位似乎与父级和自身相关?
- python - 我已经尝试了相同代码的 2 种变体,但我一生都无法弄清楚为什么它们给出不同的结果,而它们似乎是等价的