gpt4 book ai didi

python - 使用列表理解过滤不匹配的关键点

转载 作者:太空宇宙 更新时间:2023-11-03 22:44:42 29 4
gpt4 key购买 nike

我有一个使用

生成的关键点匹配列表
    bf = cv2.BFMatcher(cv2.NORM_L1,crossCheck=True)
matches = bf.match(des1,des2)

我想根据匹配从我的 kps1,kps2 列表中过滤不相关的关键点。我尝试以这种方式使用 DMatch.trainIdxDMatch.queryIdx 字段:

new_kps1 = [kp if idx in match.trainIdx for idx,kp in enumerate(kps1) for match in matches]

我最终是这样做的:

ls1 = []
ls2 = []
for m in matches:
ls1 += [kps1[m.trainIdx]]
ls2 += [kps2[m.queryIdx]]

这在列表理解中是否可能以某种方式实现?

最佳答案

您可以使用 Python 惯用法 zip(*x) 将元组列表转置为列表元组。这样你最初可以只记录元组:

x = [(kps1[m.trainIdx], kps2[m.queryIdx]) for m in matches]
ls1, ls2 = map(list, zip(*x))

您甚至可以将其放在一行中,但要牺牲可读性:

ls1, ls2 = map(list, zip(*[(kps1[m.trainIdx], kps2[m.queryIdx]) for m in matches]))

关于python - 使用列表理解过滤不匹配的关键点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49111578/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com