我已经实施了cv2 orb探测器和强力匹配器。两者都在研究大型图像。
然而,当我将图像裁剪到我感兴趣的区域并再次运行时,没有找到任何功能。
我想调整参数,但我无法访问我的orb描述符的变量,这只是一个参考
ORB:> ORB00000297D3FD3EF0 \<
我也尝试过没有任何结果的cpp文档。我想知道描述符使用哪些参数作为默认值,然后使用交叉验证来调整它们。
提前谢谢
"ORB Features"
def getORB(img):
#Initiate ORB detector
orb = cv2.ORB_create()
#find keypoints
kp = orb.detect(img)
#compute despriptor
kp, des = orb.compute(img,kp)
# draw only keypoints location,not size and orientation
img2 = cv2.drawKeypoints(img, kp, None, color=(0,255,0), flags=0)
plt.imshow(img2), plt.show()
return kp,des
答案 0 :(得分:0)
您应该使用python的 dir(...)
函数检查不透明的对象-
它返回属于该对象的方法的列表:
>>> dir(orb)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', ...]
提示:过滤所有以下划线开头的方法(私有方法的惯例)
>>> [item for item in dir(orb) if not item.startswith('_')]
['compute', 'create', 'defaultNorm', 'descriptorSize', 'descriptorType',
'detect', 'detectAndCompute', 'empty', 'getDefaultName', 'getEdgeThreshold',
'getFastThreshold', 'getFirstLevel', 'getMaxFeatures', 'getNLevels', ...]
这显示了您将需要的所有吸气剂和吸气剂。这是一个示例设置-MaxFeatures
参数:
>>> kp = orb.detect(frame)
>>> len(kp)
1000
>>> orb.getMaxFeatures
<built-in method getMaxFeatures of cv2.ORB object at 0x1115d5d90>
>>> orb.getMaxFeatures()
1000
>>> orb.setMaxFeatures(200)
>>> kp = orb.detect(frame)
>>> len(kp)
200