gpt4 book ai didi

python - 如何使用 OpenCV 在 Python 中将给定坐标转换为 KAZE 关键点

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:05 27 4
gpt4 key购买 nike

我尝试比较两个不同图像中的两个点,所以我想将坐标转换为关键点,以便稍后用它们计算描述和匹配结果。

我找到了方法:

 keypoint = cv2.KeyPoint(x, y, 0)
vec = [keypoint]

它有效,但结果我每次都得到:

 >>>akaze.compute(image, vec)
([], None)

即使我获取检测到的关键点,将它们转换为坐标并返回关键点(使用上面的结构),我也会得到相同的结果。

那么,如何将给定坐标转换为关键点(例如 KAZE 关键点)?非常感谢!

问候,狮子座

最佳答案

您创建的关键点大小为 的主要问题。根据documentation , KeyPoint构造函数签名需要 3 个参数:xy 坐标以及大小(关键点直径)。您将此大小设置为零。

因此第一个变化是设置关键点直径,i。 e.我认为这应该有效:

keypoint = cv2.KeyPoint(x, y, 5)

但事实并非如此。原因是 OpenCV 关键点描述符计算机不接受具有默认 class_id (-1) 的关键点。真的,我不知道什么是实际的 class_id 目的(参见 discussion ),但我将其更改为零只是因为 akaze.detect(...)方法返回此字段中关键点的数量(即第一个关键点为 0,第二个关键点为 1,依此类推)。出于同样的原因,我还将 size 值设置为 5 - 检测点中的这些值从大约 4.85.7 .

在这些修改之后一切都变得正常了,我。 e.这段代码:

keypoints = [cv2.KeyPoint(x, y, 5, _class_id=0)]
akaze = cv2.AKAZE_create("AKAZE")
akaze.compute(image, keypoints)

在我的案例中给出了正确的结果(OpenCV 3.0.0)。我想对于 2.4.x 版本也可以。

关于python - 如何使用 OpenCV 在 Python 中将给定坐标转换为 KAZE 关键点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34104297/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com