OpenCV-Python密集SIFT设置

时间:2015-04-30 14:16:49

标签: python opencv sift vlfeat

这是关于在python(OpenCV-Python dense SIFT)中使用OpenCVs密集筛选实现的先前发布的问题的后续问题。

使用建议的代码进行密集筛选

    dense=cv2.FeatureDetector_create("Dense")
    kp=dense.detect(imgGray)
    kp,des=sift.compute(imgGray,kp)

我有以下问题:

  • 我可以访问python中的任何DenseFeatureDetector属性吗?设置或至少阅读?
  • c ++的FeatureDetector :: create成为pythons FeatureDetector_create背后的逻辑是什么?我怎么知道基于文档(http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html)?
  • 有关VLFeat Library的python包装器的任何建议吗? pyvlfeat仍然是要走的路(我试图设置pyvlfeat,但它没有在我的mac上编译)?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容查看当前(默认)选项:

dense = cv2.FeatureDetector_create('Dense')
f = '{} ({}): {}'
for param in dense.getParams():
    type_ = dense.paramType(param)
    if type_ == cv2.PARAM_BOOLEAN:
        print f.format(param, 'boolean', dense.getBool(param))
    elif type_ == cv2.PARAM_INT:
        print f.format(param, 'int', dense.getInt(param))
    elif type_ == cv2.PARAM_REAL:
        print f.format(param, 'real', dense.getDouble(param))
    else:
        print param

然后您将获得如下输出:

featureScaleLevels (int): 1
featureScaleMul (real): 0.10000000149
initFeatureScale (real): 1.0
initImgBound (int): 0
initXyStep (int): 6
varyImgBoundWithScale (boolean): False
varyXyStepWithScale (boolean): True

您可以按以下方式更改选项:

dense.setDouble('initFeatureScale', 10)
dense.setInt('initXyStep', 3)