当前位置: 首页 > wzjs >正文

找人 做网站 一般注意金融企业类网站模板免费下载

找人 做网站 一般注意,金融企业类网站模板免费下载,宠物网站开发背景,建站的费用1. 起因, 目的, 感受: github deepface 这个项目写的很好, 继续研究使用这个项目,改写 api。增加一个前端 flask app 2. 先看效果 3. 过程: 大力改写原始项目中 api 这部分的代码, 原始项目的文件结构太繁杂了: 我把…

1. 起因, 目的, 感受:

  • github deepface 这个项目写的很好, 继续研究
  • 使用这个项目,改写 api。
  • 增加一个前端 flask app

2. 先看效果

请添加图片描述
请添加图片描述
请添加图片描述

3. 过程:

大力改写原始项目中 api 这部分的代码,
原始项目的文件结构太繁杂了:

在这里插入图片描述
我把这部分的内容,合为一个文件,即 api.py, 能删尽删。

代码 1, api
from flask import Flask
from flask_cors import CORS
import argparse
from typing import Union
from flask import Blueprint, request
import numpy as np
import os
import tempfile
import logging
from deepface import DeepFace
from deepface.api.src.modules.core import service
from deepface.commons import image_utils
from deepface.commons.logger import Logger# 配置日志
logging.basicConfig(level=logging.INFO)
logger = Logger()
blueprint = Blueprint("routes", __name__)# 辅助函数:将 NumPy 类型转换为 JSON 可序列化格式
def convert_numpy(obj):if isinstance(obj, np.floating):return float(obj)elif isinstance(obj, np.integer):return int(obj)elif isinstance(obj, np.ndarray):return obj.tolist()elif isinstance(obj, dict):return {k: convert_numpy(v) for k, v in obj.items()}elif isinstance(obj, list):return [convert_numpy(i) for i in obj]return objdef extract_image_from_request(img_key: str) -> Union[str, np.ndarray]:"""Extracts an image from the request either from json or a multipart/form-data file.Args:img_key (str): The key used to retrieve the image datafrom the request (e.g., 'img').Returns:img (str or np.ndarray): Given image detail (base64 encoded string, image path or url)or the decoded image as a numpy array."""if request.files:logging.info(f"request: {request}")logging.info(f"request.files: {request.files}")file = request.files.get(img_key)logging.info(f"img_key: {img_key}")logging.info(f"file: {file}")if file is None:raise ValueError(f"Request form data doesn't have {img_key}")if file.filename == "":raise ValueError(f"No file uploaded for '{img_key}'")# 获取文件扩展名_, ext = os.path.splitext(file.filename)if not ext:ext = '.jpg'# 保存到临时文件with tempfile.NamedTemporaryFile(delete=False, suffix=ext) as temp_file:file.save(temp_file.name)temp_file_path = temp_file.namelogging.info(f"Saved temp file: {temp_file_path}, size: {os.path.getsize(temp_file_path)} bytes")try:if not os.path.exists(temp_file_path):raise ValueError(f"Temporary file not found: {temp_file_path}")img, _ = image_utils.load_image(temp_file_path)if img is None:raise ValueError(f"Failed to load image from {temp_file_path}")logging.info(f"Loaded image shape: {img.shape if isinstance(img, np.ndarray) else 'not a numpy array'}")return imgfinally:if os.path.exists(temp_file_path):os.unlink(temp_file_path)elif request.is_json or request.form:logging.info(f"request.json: {request.json}")logging.info(f"request.form: {request.form}")input_args = request.get_json() or request.form.to_dict()if input_args is None:raise ValueError("empty input set passed")img = input_args.get(img_key)if not img:raise ValueError(f"'{img_key}' not found in either json or form data request")return imgraise ValueError(f"'{img_key}' not found in request in either json or form data")@blueprint.route("/")
def home():return f"<h1>Welcome to DeepFace API v{DeepFace.__version__}!</h1>"@blueprint.route("/represent", methods=["POST"])
def represent():input_args = (request.is_json and request.get_json()) or (request.form and request.form.to_dict())try:img = extract_image_from_request("img")except Exception as err:return {"exception": str(err)}, 400obj = service.represent(img_path=img,model_name=input_args.get("model_name", "VGG-Face"),detector_backend=input_args.get("detector_backend", "opencv"),enforce_detection=input_args.get("enforce_detection", True),align=input_args.get("align", True),anti_spoofing=input_args.get("anti_spoofing", False),max_faces=input_args.get("max_faces"),)logger.debug(obj)return convert_numpy(obj)  # 转换 NumPy 类型@blueprint.route("/verify", methods=["POST"])
def verify():input_args = (request.is_json and request.get_json()) or (request.form and request.form.to_dict())try:img1 = extract_image_from_request("img1")except Exception as err:return {"exception": str(err)}, 400try:img2 = extract_image_from_request("img2")except Exception as err:return {"exception": str(err)}, 400verification = service.verify(img1_path=img1,img2_path=img2,model_name=input_args.get("model_name", "VGG-Face"),detector_backend=input_args.get("detector_backend", "opencv"),distance_metric=input_args.get("distance_metric", "cosine"),align=input_args.get("align", True),enforce_detection=input_args.get("enforce_detection", True),anti_spoofing=input_args.get("anti_spoofing", False),)logger.debug(verification)return convert_numpy(verification)  # 转换 NumPy 类型@blueprint.route("/analyze", methods=["POST"])
def analyze():input_args = (request.is_json and request.get_json()) or (request.form and request.form.to_dict())try:img = extract_image_from_request("img")logging.info(f"api 里面收到的 img 是: {type(img)}")except Exception as err:return {"exception": str(err)}, 400actions = input_args.get("actions", ["age", "gender", "emotion", "race"])if isinstance(actions, str):actions = (actions.replace("[", "").replace("]", "").replace("(", "").replace(")", "").replace('"', "").replace("'", "").replace(" ", "").split(","))try:demographies = service.analyze(img_path=img,actions=actions,detector_backend=input_args.get("detector_backend", "opencv"),enforce_detection=input_args.get("enforce_detection", True),align=input_args.get("align", True),anti_spoofing=input_args.get("anti_spoofing", False),)except Exception as e:return {"error": f"Exception while analyzing: {str(e)}"}, 400logger.debug(demographies)return convert_numpy(demographies)  # 转换 NumPy 类型def create_app():app = Flask(__name__)CORS(app)app.register_blueprint(blueprint)logger.info(f"Welcome to DeepFace API v{DeepFace.__version__}!")return appif __name__ == "__main__":deepface_app = create_app()parser = argparse.ArgumentParser()parser.add_argument("-p", "--port", type=int, default=5005, help="Port of serving api")args = parser.parse_args()deepface_app.run(host="0.0.0.0", port=args.port, debug=True)
代码 2, flask app.py
  • 此项目,后端 api 是用 flask 写的, 前端我也用 flask 来写。
from flask import Flask, render_template, request, redirect, url_for, flash
from werkzeug.utils import secure_filename
import os
import uuid
import requests
import json
import numpy as npapp = Flask(__name__)
app.config['UPLOAD_FOLDER'] = 'static/uploads'
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024  # 限制上传文件大小为16MB
app.secret_key = 'your_secret_key'  # 用于 flash 消息# DeepFace API 的地址
DEEPFACE_API_URL = 'http://127.0.0.1:5005/analyze'# 允许的图片扩展名
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg'}# 检查文件扩展名是否允许
def allowed_file(filename):return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS# 确保上传文件夹存在
if not os.path.exists(app.config['UPLOAD_FOLDER']):os.makedirs(app.config['UPLOAD_FOLDER'])# 辅助函数:将 NumPy 数据转换为 JSON 可序列化格式
def convert_numpy(obj):if isinstance(obj, np.floating):return float(obj)elif isinstance(obj, np.integer):return int(obj)elif isinstance(obj, np.ndarray):return obj.tolist()elif isinstance(obj, dict):return {k: convert_numpy(v) for k, v in obj.items()}elif isinstance(obj, list):return [convert_numpy(i) for i in obj]return obj@app.route('/')
def index():# return render_template('index.html')return render_template('home.html')@app.route('/analyze', methods=['POST'])
def analyze():# 处理文件上传if 'file' in request.files and request.files['file'].filename:file = request.files['file']if not allowed_file(file.filename):flash('不支持的文件类型,仅支持 PNG、JPG、JPEG')return redirect(url_for('index'))# 保存文件(用于前端显示)filename = str(uuid.uuid4()) + '.' + file.filename.rsplit('.', 1)[1].lower()file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)file.save(file_path)# 重置文件流指针file.stream.seek(0)# 发送到 DeepFace APIfiles = {'img': (filename, file.stream, file.content_type)}data = {'actions': json.dumps(['age', 'gender', 'emotion', 'race']),'detector_backend': 'opencv','enforce_detection': 'true','align': 'true','anti_spoofing': 'false'}response = requests.post(DEEPFACE_API_URL, files=files, data=data)# 处理 Base64 输入(保留以兼容现有前端)elif request.form.get('base64'):base64_string = request.form['base64']if 'base64,' in base64_string:base64_string = base64_string.split('base64,')[1]payload = {'img': f'data:image/jpeg;base64,{base64_string}','actions': ['age', 'gender', 'emotion', 'race'],'detector_backend': 'opencv','enforce_detection': True,'align': True,'anti_spoofing': False}headers = {'Content-Type': 'application/json'}response = requests.post(DEEPFACE_API_URL, json=payload, headers=headers)else:flash('请上传图片文件或提供 Base64 字符串')return render_template('home.html')# 检查响应if response.status_code == 200:results = response.json()results = convert_numpy(results)flash('分析成功!')print(f"results: {results}")return render_template('home.html',   results=results, image_url=file_path if 'file' in request.files else None)else:print("API 响应:", response.text)error_msg = response.json()flash(f'API 调用失败:{error_msg}')return  render_template('home.html')if __name__ == '__main__':app.run(debug=True, host='0.0.0.0', port=8989)

4. 结论 ,todo, 感受

  • 有些地方我觉得能自己写,但是却不行。 步子太大了。 即便是有AI, 很多地方我还是不理解。
  • 这个项目只能说是,不尽完善。 所以我做起来,麻烦重重。
  • 一个球投不进,也不能全怪我,有可能是队友球传的不好,传的太偏了,太低了。

希望对大家有帮助。


文章转载自:

http://qhmEo5C7.kstLm.cn
http://ixlTBk5C.kstLm.cn
http://sXR7Fi6o.kstLm.cn
http://fNm4DzpF.kstLm.cn
http://7M5C9r5A.kstLm.cn
http://S0bKiSf2.kstLm.cn
http://4odcQmry.kstLm.cn
http://LwYgmZXo.kstLm.cn
http://p7mWB5Qq.kstLm.cn
http://GNUb0uAf.kstLm.cn
http://zabQgtFP.kstLm.cn
http://YtrIFUv5.kstLm.cn
http://KAHy7YDX.kstLm.cn
http://YdziMTwe.kstLm.cn
http://UJygTkUA.kstLm.cn
http://JOyqNyC1.kstLm.cn
http://9bxMMbhy.kstLm.cn
http://7WQaDZQf.kstLm.cn
http://lvB80Wur.kstLm.cn
http://hJdsYSLj.kstLm.cn
http://41PguGKk.kstLm.cn
http://ZzJQaMmT.kstLm.cn
http://lSeD4Bra.kstLm.cn
http://rJyTrIyr.kstLm.cn
http://94ckXgBY.kstLm.cn
http://ud1HrPId.kstLm.cn
http://k80opG5L.kstLm.cn
http://LdizuLZu.kstLm.cn
http://m36I6Gyn.kstLm.cn
http://MXwmzRmY.kstLm.cn
http://www.dtcms.com/wzjs/609549.html

相关文章:

  • 国内全屏网站有哪些393网站
  • 大港油田建设官方网站上海做征信服务的公司网站
  • 关于做网站的总结wordpress 文章字体
  • 网站建设弹窗怎么设置订阅号怎么开通小程序
  • 做公众号试卷的网站贵阳公众号开发公司
  • 大连网站建设新图闻建设一个网站的意义
  • wordpress 动画主题网站设计seo
  • 衡水网站建设一多软件江西赣州258网络推广
  • 刚察县wap网站建设公司wordpress linux 下载
  • 可以做淘宝推广的网站有哪些内容学平面设计哪个学校好
  • 上海网站设计哪家好社保在哪个网站做增员
  • 农业公园网站建设无极在线最新招聘找工作
  • 大气手机网站模板wordpress 被攻击
  • 韩都衣舍网站建设的改进企业网站颜色选择
  • 如何备份网站academy汉化wordpress
  • 学校网站建设状况vps做网站怎么加速
  • 网站策划与建设实训心得凯里市建设局网站
  • 做网站在哪里找客户豫港大厦 做网站
  • 手机界面设计网站小程序代理平台
  • 盈佳国际天天做赢家网站怎么登录已注册的网站
  • 哪些分类网站十大网站app软件下载
  • 定制型网站设计价格网站渗透案例
  • 网站栏目页怎么做python做网站好吗
  • 成功企业网站必备要素做网站的硬件
  • 网站开发工作前景河南郑州网站推广优化外包
  • 网网站建设设计公司店铺推广
  • 图案设计网站有哪些基于推荐算法的网站开发
  • 玉树州网站建设公司wordpress是开源
  • 淘宝做网站推广怎么样阳澄湖大闸蟹网站建设
  • 哪个网站可以免费学编程深圳电器公司官网