[英]OpenCV-Python dense SIFT
OpenCV有关于生成SIFT描述符的非常好的文档 ,但这是“弱SIFT”的版本,其中关键点由原始Lowe算法检测。 OpenCV示例读取如下内容:
img = cv2.imread('home.jpg')
gray= cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
sift = cv2.SIFT()
kp = sift.detect(gray,None)
kp,des = sift.compute(gray,kp)
我正在寻找的是强/密SIFT,它不检测关键点,而是计算一组补丁(例如16x16像素,8像素填充)的SIFT描述符,覆盖图像作为网格。 据我了解,在OpenCV中有两种方法可以做到这一点:
换句话说,我必须用能够提供我需要的关键点的东西替换sift.detect()
行。
我的问题是OpenCV文档的其余部分,特别是wrt Python,严重缺乏,所以我不知道如何实现这两个方面。 我在C ++文档中看到网格有关键点检测器,但我不知道如何从Python中使用它们。
另一种方法是切换到VLFeat,它具有非常好的DSift / PHOW实现,但意味着我必须从python切换到matlab。
有任何想法吗? 谢谢。
你可以在opencv 2.4.6中使用Dense Sift <。 按名称创建特征检测器。
cv2.FeatureDetector_create(detectorType)
然后用"Dense"
字符串代替detectorType
例如:-
dense=cv2.FeatureDetector_create("Dense")
kp=dense.detect(imgGray)
kp,des=sift.compute(imgGray,kp)
尽管OpenCV方式成为标准,但对我来说这太慢了。 所以为此,我使用了pyvlfeat,它基本上是对VL-FEAT的python绑定。 这些函数具有与Matlab函数类似的语法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.