Python OpenCV ORB 特征点匹配错误解决:ValueError: not enough values to unpack (expected 2, got 1)
Python OpenCV ORB 特征点匹配错误解决:ValueError: not enough values to unpack (expected 2, got 1)
这个错误是由于在 for 循环中的 matches12 变量中的元素不是一个元组,而是一个单独的匹配对象。这可能是因为没有找到足够的匹配,导致 matches12 列表为空。因此,在解包元组之前,需要先检查 matches12 列表是否为空。可以使用以下代码进行修改:
# 对图像1和图像2的特征点进行匹配
matches12 = flann.knnMatch(descriptors1, descriptors2, k=2)
good_matches12 = []
for match in matches12:
if len(match) < 2:
continue
m, n = match
if m.distance < 0.7 * n.distance:
good_matches12.append(m)
解释:
- 原始代码使用
for m, n in matches12:试图将matches12中的每个元素解包为两个变量m和n。 - 当
matches12列表为空或包含单个匹配对象时,就会导致ValueError: not enough values to unpack (expected 2, got 1)错误。 - 修改后的代码使用
for match in matches12:遍历matches12列表,并检查每个match的长度。如果长度小于 2,则跳过该匹配。 - 如果长度大于等于 2,则使用
m, n = match解包匹配对象,并进行后续的距离比较和筛选。
通过以上修改,可以避免 ValueError: not enough values to unpack (expected 2, got 1) 错误,并确保程序能够正常进行特征点匹配。
原文地址: https://www.cveoy.top/t/topic/koLv 著作权归作者所有。请勿转载和采集!