如何从OpenCV"cv2.keypoint"对象中提取x,y坐标?

men*_*xyz 7 python opencv numpy

我试着使用以下代码:

    xCoordinate=point.x
Run Code Online (Sandbox Code Playgroud)

(点是cv2.keyPoint的类型)它给我错误说cv2.keyPoint没有属性'x'

小智 12

point.pt is a tuple(X,Y)`.

所以,

x = point.pt[0]
y = point.pt[1]
Run Code Online (Sandbox Code Playgroud)

要么,

(x,y) = point.pt
Run Code Online (Sandbox Code Playgroud)


Fra*_*aro 9

您可以使用:

import numpy as np

pts = np.float([kp[idx].pt for idx in range(0, len(kp))]).reshape(-1, 1, 2)
Run Code Online (Sandbox Code Playgroud)

pts将是一个array关键点.


Vik*_*Vik 8

OpenCV 为此提供了一个函数。你可以运行:

pts = cv2.KeyPoint_convert(kp)
Run Code Online (Sandbox Code Playgroud)


roa*_*r66 7

阅读文档。

类 KeyPoint

显着点检测器的数据结构。

  • Point2f pt -- 关键点的坐标

  • 浮动大小——有意义的关键点邻域的直径

  • 浮动角度 ...¶

所以point.pt是一个Point2f。

尝试 x,y= point.pt

  • `point.pt.x` 无效,请更正为:`x, y = point.pt` (2认同)