|
@@ -2,8 +2,11 @@ import os
|
|
|
import tempfile
|
|
|
|
|
|
import face_recognition
|
|
|
+import requests
|
|
|
+
|
|
|
+from flask import Flask, request, jsonify, json
|
|
|
+
|
|
|
|
|
|
-from flask import Flask, request, jsonify
|
|
|
def create_app():
|
|
|
app = Flask(__name__)
|
|
|
|
|
@@ -18,8 +21,31 @@ def create_app():
|
|
|
def hello_world(): # put application's code here
|
|
|
return 'Hello World!'
|
|
|
|
|
|
- @app.route('/recognize', methods=['POST'])
|
|
|
- def recognize():
|
|
|
+ @app.route('/recognize/url', methods=['POST'])
|
|
|
+ def recognize_url():
|
|
|
+ if 'url' not in request.json:
|
|
|
+ return jsonify({'error': 'No URL provided'}), 400
|
|
|
+ url = request.json.get('url')
|
|
|
+ if not url:
|
|
|
+ return jsonify({'error': 'Invalid URL'}), 400
|
|
|
+ try:
|
|
|
+ # 从 URL 下载文件
|
|
|
+ response = requests.get(url)
|
|
|
+ if response.status_code != 200:
|
|
|
+ return jsonify({'error': 'Failed to download image from URL'}), 400
|
|
|
+ # 创建一个临时文件保存下载的文件
|
|
|
+ temp_file = tempfile.NamedTemporaryFile(delete=False)
|
|
|
+ temp_file.write(response.content)
|
|
|
+ temp_file.close()
|
|
|
+ find = find_faces_in_image(temp_file.name)
|
|
|
+ os.remove(temp_file.name) # 删除临时文件
|
|
|
+ results = return_json(find)
|
|
|
+ return results
|
|
|
+ except Exception as e:
|
|
|
+ return jsonify({'error': str(e)}), 500
|
|
|
+
|
|
|
+ @app.route('/recognize/file', methods=['POST'])
|
|
|
+ def recognize_file():
|
|
|
if 'file' not in request.files:
|
|
|
return jsonify({'error': 'No file part'}), 400
|
|
|
file = request.files['file']
|
|
@@ -29,13 +55,35 @@ def create_app():
|
|
|
# 创建一个临时文件保存上传的文件
|
|
|
temp_file = tempfile.NamedTemporaryFile(delete=False)
|
|
|
file.save(temp_file.name)
|
|
|
- results = find_faces_in_image(temp_file.name)
|
|
|
- os.remove(temp_file.name) # 删除临时文件
|
|
|
- return jsonify(results)
|
|
|
+ find = find_faces_in_image(temp_file.name)
|
|
|
+ os.remove(temp_file.name)# 删除临时文件
|
|
|
+ results = return_json(find)
|
|
|
+ return results
|
|
|
+ return jsonify({'error': 'An error occurred'}), 500
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
return app
|
|
|
|
|
|
|
|
|
|
|
|
+def return_json(find):
|
|
|
+ result = {
|
|
|
+ "code": 0,
|
|
|
+ "msg": "success",
|
|
|
+ "data": None, # 将 data 初始化为 None
|
|
|
+ "success": True
|
|
|
+ }
|
|
|
+ if find:
|
|
|
+ result["data"] = {"find_face_status": 1}
|
|
|
+ else:
|
|
|
+ result["data"] = {"find_face_status": 2}
|
|
|
+ json_result = json.dumps(result)
|
|
|
+ return json_result
|
|
|
+
|
|
|
+
|
|
|
|
|
|
# 全局变量存储已知人脸编码和名称
|
|
|
known_face_encodings = []
|