无法摆脱ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

2024-10-01 13:38:21 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我查看了有关stackoverflow中此错误的其他问题,但未能得到答案。我有以下代码:

def getKnownFace():

    unknown_image = face_recognition.load_image_file("filename.jpg")
    unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]

    matches = face_recognition.compare_faces(known_face_encodings, unknown_face_encoding)
    name = ''
    if True in matches:
        first_match_index = matches.index(True)
        name = known_face_names[first_match_index]
        print(name)

        return name

这就是我得到的错误:

  File "D:/Universitet/CheckKnownFace.py", line 100, in <module>
    getKnownFace()
  File "D:/Universitet/CheckKnownFace.py", line 91, in getKnownFace
    if True in matches:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

火柴

<class 'list'>
[array([ True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True,  True,
        True,  True])]

我用.any().all()尝试了几个变体,但我总是得到一个错误,即bool类型或列表类型没有all()或any()方法

我该怎么做才能让它正常工作


Tags: nameinimagetrueindex错误anyall
1条回答
网友
1楼 · 发布于 2024-10-01 13:38:21

问题是matches是一个包含numpy数组中单个元素的列表。简单地改变

if True in matches

if True in matches[0]

当然,这取决于匹配项是否包含多于numpy数组的内容。如果是这样,您可能必须执行for循环或提供其他逻辑,这取决于您想要实现的目标

相关问题 更多 >