首页 > 解决方案 > 如何将列表转换为 numpy 数组以与库“face_recognition”一起使用

问题描述

我正在使用这个模块“face_recognition”,我正在使用函数“face_encondings”创建一个numpy数组并将其保存在Sqlite3上。但是,当我从 sqlite3 中选择这个 face_enconding 时,它是字符串格式的。我需要一些帮助才能将其转换为 numpy 数组以使用“compare_faces”函数,如下所示:

import sqlite3
con = sqlite3.connect("./teste.db")
cur = con.cursor()
import face_recognition
import numpy

j = face_recognition.load_image_file('mine.jpg')
je = face_recognition.face_encodings(j)[0]

cur.execute("SELECT faceencoding FROM users")
v = ''
for x in cur:
    v = str(x[0])

print(v)
j = numpy.asarray(str(v.replace('[','').replace(']', '')))
print(j)
result = face_recognition.compare_faces([je], j) #Here's where i'm getting the error!

输出错误是这样的:

    Traceback (most recent call last):
  File "c:/Users/uriel/Documents/Python/fr/teste.py", line 18, in <module>
    result = face_recognition.compare_faces([je], j)
  File "C:\Users\uriel\Documents\Python\fr\myvenv\lib\site-packages\face_recognition\api.py", line 226, in compare_faces
    return list(face_distance(known_face_encodings, face_encoding_to_check) <= tolerance)
  File "C:\Users\uriel\Documents\Python\fr\myvenv\lib\site-packages\face_recognition\api.py", line 75, in face_distance
    return np.linalg.norm(face_encodings - face_to_compare, axis=1)
numpy.core._exceptions.UFuncTypeError: ufunc 'subtract' did not contain a loop with signature matching types (dtype('<U1555'), dtype('<U1555')) -> dtype('<U1555')

有一段时间我可以转换它,但是数组也是空的;s

标签: pythonnumpy

解决方案


推荐阅读