以下代码用于使用变量“ locs”给定位置x y坐标来查找图像的关键点。tp= 256,r = 180,c = 240。在调试期间,我收到 desc [idx-1,] = tmp 行的索引错误。
tp = compareX.shape[0]
desc = np.zeros((1, tp))
r = im.shape[0]
c = im.shape[1]
idx = 1
new_locs = np.zeros((locs.shape))
for i in range(1, locs.shape[0]):
x = math.floor(locs[i - 1, 0]) # keypoint x coordinate
y = math.floor(locs[i - 1, 1]) # keypoint y coordinate
#non-maximum suppression
if (x - 4) < 1 or (y - 4) < 1 or (x + 4) > c or (y + 4) > r:
continue
#save passing coordinates
new_locs[idx - 1,] = np.array([x, y])
#Calculate BRIEF descriptor
tmp = np.zeros((1, tp))
x = x-4
y = y-4
for j in range(1, tp):
ax = x + math.floor((compareX[j-1]-1)/patchWidth)
ay = y + ((compareX[j-1]-1) % patchWidth)
bx = x + math.floor((compareY[j-1] - 1) / patchWidth)
by = y + ((compareY[j-1] - 1) % patchWidth)
if (im[ay, ax] < im[by, bx]).all():
tmp[0, j-1] = 1
***desc[idx-1, ] = tmp***
idx = idx + 1
locs = new_locs
return locs, desc
答案 0 :(得分:0)
您已将desc
设置为尺寸为1
x tp
(将其视为1行,tp
列)。
tp = 5
desc = np.zeros((1, tp))
# array([[ 0., 0., 0., 0., 0.]])
desc.shape
# (1, 5)
使用零索引,这意味着当轴0(行轴)中只有一行时,引用desc[1, ]
会请求第2行。
这就是为什么出现错误的原因:idx == 2
时,然后desc[idx-1, ] == desc[1, ]
。
也许您想索引到轴1?例如。 desc[ ,1]