Doa*_*Doa 14 python opencv 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)
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是强/密SIFT,它不检测关键点,而是计算一组补丁(例如16x16像素,8像素填充)的SIFT描述符,覆盖图像作为网格.据我了解,在OpenCV中有两种方法可以做到这一点:
换句话说,我必须sift.detect()用能够提供我所需要的关键点的东西替换该行.
我的问题是OpenCV文档的其余部分,特别是wrt Python,严重缺乏,所以我不知道如何实现这两个方面.我在C++文档中看到网格有关键点检测器,但我不知道如何从Python中使用它们.
另一种方法是切换到VLFeat,它具有非常好的DSift/PHOW实现,但意味着我必须从python切换到matlab.
有任何想法吗?谢谢.
mad*_*ram 22
你可以在opencv 2.4.6中使用Dense Sift <.按名称创建特征检测器.
cv2.FeatureDetector_create(detectorType)
然后用"Dense"string代替detectorType
例如:-
dense=cv2.FeatureDetector_create("Dense")
kp=dense.detect(imgGray)
kp,des=sift.compute(imgGray,kp)
Run Code Online (Sandbox Code Playgroud)