【问题标题】:face_recognition python flask not processing passed imageface_recognition python flask不处理传递的图像
【发布时间】:2020-09-11 12:17:43
【问题描述】:

我已经创建了一个 Flask API,我想将图像从我的 Flutter 应用程序传递到 API POST 端点。我成功传输了图像,但是当我想在

中使用它时
  first_image = face_recognition.load_image_file(image_from_post_request or down below image1)

它只会给我错误!

当我使用本地保存的图像尝试此功能时,它可以工作。例如:

  first_image = face_recognition.load_image_file('./img/mj.png')

我尝试在本地保存该帖子图像,然后对其进行解析,但它不起作用。我是这方面的初学者,所以任何帮助将不胜感激。

谢谢

我的代码:

@app.route('/compare', methods=['POST'])
  def compare():
  image1 = request.files['face1']
  image2 = request.files['face2']

  first_image = face_recognition.load_image_file(image1)
  first_image_encoding = face_recognition.face_encodings(first_image)[0]


  unknown_image = face_recognition.load_image_file(image2)
  second_image_encoding = face_recognition.face_encodings(unknown_image)[0]

  results = face_recognition.compare_faces([first_image_encoding], second_image_encoding)

  if results[0]:
      print('These images are same')
      return jsonify({'response' : 'These images are same'})
  else: 
      print('These images are not same')
      return jsonify({'response' : 'These images are not same'})

错误:

127.0.0.1 - - [25/May/2020 00:07:05] "POST /compare HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/app.py", line 2450, in wsgi_app
    response = self.handle_exception(e)
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/app.py", line 1867, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/bilal/.local/share/virtualenvs/face_reck_api-svbO_hqN/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Users/bilal/Desktop/Python/face_reck_api/app.py", line 74, in someting
    first_image_encoding = face_recognition.face_encodings(first_image)[0]
IndexError: list index out of range

【问题讨论】:

    标签: python flask image-processing face-recognition flask-restful


    【解决方案1】:

    由于我没有足够的声誉来发表评论,我将在此处添加此内容

    1. 请添加您收到的错误消息

    2. 来自Flask Documentation,“请注意,只有在请求方法为 POST、PUT 或 PATCH 并且发布到请求的文件具有 enctype="multipart/form-data" 时,文件才会包含数据。它将否则为空。"

    从我可以从上面的代码 sn-p 中获得的信息,您似乎缺少 POST、PUT 或 PATCH 的请求方法

    更新

    请看一下,如果在图像中找不到人脸,则 encodings 数组将为空。因此,在尝试访问数组的第一个元素(即元素 [0])之前,请检查数组的长度。

    例如:

    encodings = face_recognition.face_encodings(known_image)
    if len(encodings) > 0:
        biden_encoding = encodings[0]
    else:
       print("No faces found in the image!")
       quit()
    

    `` Github link to similar issue

    【讨论】:

    • 谢谢,问题不在于POST请求,而在于图像处理。
    • 您能否澄清一下似乎是哪个功能失败了? 1. first_image = face_recognition.load_image_file('./img/mj.png') 2. first_image_encoding = face_recognition.face_encodings(first_image)[0] 从你的堆栈跟踪看来,第二个是失败的地方,但是你的初始评论似乎说 No.1 是你认为它失败的地方?我问这个是因为我无法自己运行 face_recognition 来测试它自己@BiloSuper
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2021-06-11
    • 1970-01-01
    • 2014-04-29
    • 2019-11-22
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多