我用旧的SIFT
编写了一个算法,它非常适合我的需要。但是,我意识到SIFT
的新版本不再支持OpenCV
。有什么建议可以用来替代它,这样我就可以保留我现有的代码了?我试过ORB
,但它的工作方式似乎不同,似乎不能让它以同样的方式工作。在
筛选/筛选材料
def siftMatcher(image, logoToSearch):
MIN_MATCH_COUNT = 45
img1 = logoToSearch
img2 = image
# Initiate SIFT detector
sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(img1, None)
kp2, des2 = sift.detectAndCompute(img2, None)
# FLANN parameters
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=30)
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(des1, des2, k=2)
# store all the good matches as per Lowe's ratio test.
mCords = []
nCords = []
hasSeen = []
for m, n in matches:
if m.distance < 0.65 * n.distance:
mC = kp2[m.trainIdx].pt
nC = kp2[n.trainIdx].pt
if ([mC,nC] in hasSeen or [nC,mC] in hasSeen):
continue
mCords.append(mC)
nCords.append(nC)
hasSeen.append([mC,nC])
hasSeen.append([nC,mC])
symMatches = numberOfSymetricMatches(mCords,nCords)
return symMatches
创建分数
^{pr2}$编辑1
Explanation on why I can't use older version of OpenCV
编辑2:ORB实现,结果不佳
^{3}$
目前没有回答
相关问题 更多 >
编程相关推荐