最近在看ORB的特征提取,在运行代码的时候,输出kp点发现,是一串看不懂的数字,我们知道kp点包含很多信息,有坐标,方向,大小范围等。
这是我输出kp点的内容
kp [<KeyPoint 000001781B561150>, <KeyPoint 000001781B5613C0>]
这是orb提取特征的源码
import numpy as np
import cv2 as cv
import os
import time
img = cv.imread('.\yolo\\2.jpg')
orb = cv.ORB_create()
kp = orb.detect(img,None)
print("kp",kp)
kp, des = orb.compute(img, kp)
print("kp",kp)
print("des",des)
img = cv.drawKeypoints(img,kp,img,color=(0,255,0), flags=0)
cv.imshow('p',img)
cv.waitKey(0)
下面,我们把kp(Keypoints) 关键点转化为普通点集
print(kp[0].pt)
print(kp[0].size)
print(kp[0].angle)
print(kp[0].response)
print(kp[0].octave)
print(kp[0].class_id)
结果:
(75.0, 31.0)
31.0
27.31970977783203
4.206578159937635e-05
0
-1
参数说明:
pt:关键点的位置
size:关键点的范围
angle:关键点角度
response:能够给某个关键点更强烈响应的检测器,有时能够被理解为特性实际存在的概率
octave:标示了关键点被找到的层级,总是希望在相同的层级找到对应的关键点
class_id:标示关键点来自于哪一个目标
参考:
关键点的描述符KeyPoint对象
python opencv把普通的点集转换为KeyPoint类型
python + opencv 中 kp(关键点) 的形式及提取坐标方法
OpenCV中KeyPoint类