运行时报错
来源:11-11 图像查找

weixin_慕用9360114
2024-09-21
你好!我模仿写代码运行时报了这个:
dstPts = np.float32([kp1[m.trainIdx].pt for m in good]).reshape(-1, 1, 2)
IndexError: tuple index out of range
代码如下:
from hashlib import algorithms_available
import cv2
import numpy as np
#打开两张图片
img1 = cv2.imread(‘opencv_search.png’)
img2 = cv2.imread(‘opencv_orig.png’)
#灰度化
g1 = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
g2 = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
#创建SIFT对象
sift = cv2.SIFT.create()
#特征点检测
kp1,des1 = sift.detectAndCompute(g1,None)
kp2,des2 = sift.detectAndCompute(g2,None)
#创建匹配对对象
index_params = dict(algorithm = 1,trees = 5)
search_params = dict(checks = 50)
flann = cv2.FlannBasedMatcher(index_params,search_params)
#对描述子进行计算
matchs = flann.knnMatch(des1,des2,2)
good = []
for i,(m,n) in enumerate(matchs):
if m.distance < 0.7 * n.distance:
good.append(m)
if len(good) >= 4:
srcPts = np.float32([kp1[m.queryIdx].pt for m in good]).reshape(-1, 1, 2)
dstPts = np.float32([kp1[m.trainIdx].pt for m in good]).reshape(-1, 1, 2)
H, _ = cv2.findHomography(srcPts, dstPts, cv2.RANSAC, 5.0)
h, w = img1.shape[:2]
pts = np.float32([[0, 0], [0, h - 1], [w - 1, h - 1], [w - 1, 0]]).reshape(-1, 1, 2)
dst = cv2.perspectiveTransform(pts, H)
cv2.polylines(img2, [np.int_(dst)], True, (0, 0, 255))
else:
print(‘the number of the good is less than 4’)
exit()
ret = cv2.drawMatchesKnn(img1,kp1,img2,kp2,[good],None)
cv2.imshow(‘ret’,ret)
cv2.waitKey(0)
1回答
-
李超
2024-09-21
你这是啥意思,把一个浮点转成-1,1,2的形状?
022024-09-21
相似问题