我收到一个错误:
line 33, in <module>
img3 = cv2.drawMatches(img1,kp1,img2,kp2,matches,None,flags=2)
TypeError: Expected cv::DMatch for argument 'matches1to2'
Run Code Online (Sandbox Code Playgroud)
当我尝试执行此代码时。它应该是 SIFT 中的简单图像比较并绘制匹配。我以前让代码适用于 ORB,但是当我将其转换为适用于 SIFT 时,发生了此错误。有人可以帮我解决这个问题吗?代码如下:
#import os
import sys
sys.path.append('/usr/local/lib/python2.7/site-packages')
import cv2
import time
import glob, os
import numpy as np
import matplotlib.pyplot as plt
img1 = cv2.imread("/home/undead/Documents/TestSpectro/test.png",0)
img2 = cv2.imread("/home/undead/Documents/LibrarySpectro/ThankYouAud.png",0)
sift = cv2.xfeatures2d.SIFT_create(3000)
kp1,des1 = sift.detectAndCompute(img1,None)
kp2,des2 = sift.detectAndCompute(img2,None)
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2,k=2)
good = []
for m,n in matches:
if m.distance < 0.75 * n.distance:
good.append([m])
#img3 = cv2.drawMatches(img1,kp1,img2,kp2,good,None,flags=2)
img3 = …Run Code Online (Sandbox Code Playgroud)