flask部署mtcnn

目录

 打印人脸检测信息

输出结果

 保存检测结果

浏览器查看nginx(nginx配置这里就不多介绍了)

 url图片检测人脸

输出结果

Flask hello-world

Flask+mtcnn

python调flask+mtcnn


 打印人脸检测信息

import cv2
from mtcnn.mtcnn import MTCNNimg = cv2.cvtColor(cv2.imread('./face.png'), cv2.COLOR_BGR2RGB)detector = MTCNN()
faces = detector.detect_faces(img)print(faces)

输出结果

[{'box': [283, 295, 43, 49], 'confidence': 0.9999926090240479, 'keypoints': {'left_eye': (297, 311), 'right_eye': (317, 311), 'nose': (308, 322), 'mouth_left': (299, 332), 'mouth_right': (316, 332)}}, {'box': [748, 436, 49, 54], 'confidence': 0.9999852180480957, 'keypoints': {'left_eye': (765, 456), 'right_eye': (786, 456), 'nose': (776, 467), 'mouth_left': (767, 477), 'mouth_right': (783, 477)}}, {'box': [450, 426, 46, 52], 'confidence': 0.9999797344207764, 'keypoints': {'left_eye': (461, 446), 'right_eye': (482, 443), 'nose': (471, 454), 'mouth_left': (467, 467), 'mouth_right': (481, 466)}}, {'box': [729, 246, 45, 49], 'confidence': 0.99997878074646, 'keypoints': {'left_eye': (743, 263), 'right_eye': (763, 263), 'nose': (754, 273), 'mouth_left': (746, 283), 'mouth_right': (761, 283)}}, {'box': [886, 437, 51, 56], 'confidence': 0.9999725818634033, 'keypoints': {'left_eye': (901, 456), 'right_eye': (924, 457), 'nose': (912, 470), 'mouth_left': (903, 480), 'mouth_right': (921, 481)}}, {'box': [968, 275, 43, 53], 'confidence': 0.9999260902404785, 'keypoints': {'left_eye': (979, 296), 'right_eye': (999, 299), 'nose': (987, 307), 'mouth_left': (976, 315), 'mouth_right': (994, 318)}}, {'box': [1076, 116, 53, 65], 'confidence': 0.9999237060546875, 'keypoints': {'left_eye': (1087, 141), 'right_eye': (1110, 139), 'nose': (1095, 150), 'mouth_left': (1089, 167), 'mouth_right': (1108, 165)}}, {'box': [294, 427, 47, 55], 'confidence': 0.9999179840087891, 'keypoints': {'left_eye': (309, 448), 'right_eye': (332, 449), 'nose': (321, 460), 'mouth_left': (310, 470), 'mouth_right': (329, 470)}}, {'box': [1033, 443, 48, 55], 'confidence': 0.9999170303344727, 'keypoints': {'left_eye': (1048, 462), 'right_eye': (1071, 461), 'nose': (1061, 475), 'mouth_left': (1051, 485), 'mouth_right': (1069, 484)}}, {'box': [502, 292, 43, 52], 'confidence': 0.999904990196228, 'keypoints': {'left_eye': (513, 313), 'right_eye': (534, 312), 'nose': (524, 322), 'mouth_left': (516, 333), 'mouth_right': (534, 332)}}, {'box': [599, 434, 49, 57], 'confidence': 0.999863862991333, 'keypoints': {'left_eye': (614, 453), 'right_eye': (636, 454), 'nose': (625, 464), 'mouth_left': (617, 477), 'mouth_right': (631, 478)}}, {'box': [143, 110, 56, 71], 'confidence': 0.9998359680175781, 'keypoints': {'left_eye': (160, 136), 'right_eye': (186, 136), 'nose': (175, 150), 'mouth_left': (163, 162), 'mouth_right': (184, 162)}}, {'box': [626, 251, 47, 55], 'confidence': 0.999794065952301, 'keypoints': {'left_eye': (640, 272), 'right_eye': (660, 272), 'nose': (650, 284), 'mouth_left': (641, 294), 'mouth_right': (657, 294)}}, {'box': [157, 253, 55, 67], 'confidence': 0.999727189540863, 'keypoints': {'left_eye': (175, 278), 'right_eye': (199, 278), 'nose': (188, 291), 'mouth_left': (175, 303), 'mouth_right': (198, 304)}}, {'box': [1192, 197, 56, 79], 'confidence': 0.9995760321617126, 'keypoints': {'left_eye': (1206, 230), 'right_eye': (1231, 230), 'nose': (1217, 247), 'mouth_left': (1206, 257), 'mouth_right': (1231, 256)}}, {'box': [383, 301, 41, 50], 'confidence': 0.9991057515144348, 'keypoints': {'left_eye': (396, 319), 'right_eye': (415, 318), 'nose': (406, 330), 'mouth_left': (397, 339), 'mouth_right': (414, 339)}}, {'box': [861, 272, 45, 54], 'confidence': 0.9945133924484253, 'keypoints': {'left_eye': (874, 293), 'right_eye': (893, 292), 'nose': (884, 305), 'mouth_left': (877, 313), 'mouth_right': (891, 313)}}]

 保存检测结果

import cv2
from mtcnn.mtcnn import MTCNNimg = cv2.cvtColor(cv2.imread('./face.png'), cv2.COLOR_BGR2RGB)detector = MTCNN()
faces = detector.detect_faces(img)for i in faces:x,y,w,h = i['box']cv2.rectangle(img, (x,y), (x+w, y+h), (255, 0, 0), 2)cv2.putText(img,'{:.1f}'.format(i['confidence']),(x,y-4),cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0),2)for _,v in i['keypoints'].items():cv2.circle(img,(v[0],v[1]),3,(255,0,0),3)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imwrite('result.jpg', img)

浏览器查看nginx(nginx配置这里就不多介绍了)

 url图片检测人脸

import cv2
from mtcnn.mtcnn import MTCNN
import requests
import numpy as npurl = 'http://192.168.31.198:8080/00000125.jpg'
r = requests.get(url)buffer_np = np.frombuffer(r.content, np.uint8)
img = cv2.imdecode(buffer_np, cv2.IMREAD_COLOR)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)detector = MTCNN()
faces = detector.detect_faces(img)print(faces)

输出结果

[{'box': [248, 56, 58, 76], 'confidence': 0.9995517134666443, 'keypoints': {'left_eye': (261, 85), 'right_eye': (289, 86), 'nose': (271, 99), 'mouth_left': (262, 115), 'mouth_right': (283, 115)}}]

Flask hello-world

from flask import Flask
import requests
import osapp = Flask(__name__)@app.route('/')
def hi():return 'hello world'app.run(host='0.0.0.0',port=9986)

Flask+mtcnn

from flask import Flask
import requests
import os
import cv2
import numpy as np
from mtcnn import MTCNNapp = Flask(__name__)
model = MTCNN()def inference(imgName):# url = 'http://192.168.31.198:8080/00000125.jpg'url = 'http://192.168.31.198:8080/'+imgNamer = requests.get(url)buffer_np = np.frombuffer(r.content, np.uint8)img = cv2.imdecode(buffer_np, cv2.IMREAD_COLOR)img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)faces = model.detect_faces(img)return {'face_result':faces}@app.route('/<name>')
def hi(name):result = inference(name)return resultapp.run(host='0.0.0.0',port=9986)

python调flask+mtcnn

import requestsresponse = requests.get('http://192.168.31.198:9986/00000125.jpg')
print(response.text)import numpy as np
import cv2
import jsonurl = 'http://192.168.31.198:8080/00000125.jpg'
r = requests.get(url)
buffer_np = np.frombuffer(r.content, np.uint8)
img = cv2.imdecode(buffer_np, cv2.IMREAD_COLOR)
result = json.loads(response.text)for i in result['face_result']:x,y,w,h = i['box']cv2.rectangle(img, (x,y), (x+w, y+h), (255, 0, 0), 2)cv2.putText(img,'{:.1f}'.format(i['confidence']),(x,y-4),cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0),2)for _,v in i['keypoints'].items():cv2.circle(img,(v[0],v[1]),3,(255,0,0),3)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
cv2.imwrite('test.jpg', img)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[C++][数据结构][二叉搜索树]详细讲解

目录 1.概念2.二叉搜索树操作1.查找2.插入3.删除 3.二叉搜索树的实现4.二叉搜索树的应用1.K模型2.KV模型 5.二叉搜索树的性能分析 1.概念 二叉搜索树又称二叉排序树&#xff0c;具有以下性质 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子…

高考志愿填报,选专业应该考虑哪些因素?

这是一个复杂的社会&#xff0c;各种影响就业的因素层出不穷&#xff0c;也从未断绝。对于高考生而言&#xff0c;高考刚结束&#xff0c;短暂的放松后&#xff0c;就必须考虑自身以后应该就读什么专业&#xff0c;如果不对就读专业进行评估&#xff0c;仔细挑选&#xff0c;毕…

C#传值参数 -1值类型 -2引用类型

传值参数 -1值类型 -2引用类型 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //传值参数-1、值类型 2、引用类型 namespace PamatetersExample {class Program{static void Main(string[] args){St…

代码随想录算法训练营day22|701.二叉搜索树中的插入操作、 450.删除二叉搜索树中的节点、 235. 二叉搜索树的最近公共祖先

701.二叉搜索树中的插入操作 这道题较为简单&#xff0c;只需要通过递归找到符合要求的叶子节点&#xff0c;并将节点插入即可。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(…

A45 STM32_HAL库函数 之 SMARTCARD通用驱动 -- A -- 所有函数的介绍及使用

A45 STM32_HAL库函数 之 SMARTCARD通用驱动 -- A -- 所有函数的介绍及使用 1 该驱动函数预览1.1 HAL_SMARTCARD_Init1.2 HAL_SMARTCARD_DeInit1.3 HAL_SMARTCARD_MspInit1.4 HAL_SMARTCARD_MspDeInit1.5 HAL_SMARTCARD_ReInit1.6 HAL_SMARTCARD_Transmit1.7 HAL_SMARTCARD_Rece…

mysql 8 创建用户,并对用户授权

创建用户&#xff1a; 对MySQL创建新用户。命令如下&#xff1a; create user devuser% identified by 123456; 授予权限 grant all privileges on joolun_ry.* to devuser% with grant option; 参数说明&#xff1a; joolun_ry&#xff1a;表明对那个库进行授权&#xf…

BFD(简单配置实验)

实验拓扑 配置接口IP地址 正常互通 配置静态BFD 查看状态&#xff1a;为UP 与静态路由联动 查看静态路由状态为active 将交换机的接口down掉 BFD的状态为down 再次查看静态路由的状态为Inactive

Qt事件的详细介绍和原理

介绍 事件类型&#xff1a; 1、窗口系统事件spontaneous。 2、异步事件PostEvent。 3、同步事件SendEvent 窗体系统事件spontaneous 代表事件有&#xff1a;各类外设事件&#xff0c;如鼠标单双击、滚轮、移动&#xff0c;键盘按键等事件。 使用场景&#xff1a;该类事件都是…

RawChat:优化AI对话体验,全面兼容GPT功能平台

文章目录 一、Rawchat简介1.1 RawChat的主要特性1.2 RawChat的技术原理简述 二、使用教程三、案例应用3.1 图片内容分析3.2 生图演示3.3 文档解析3.4 探索更多 四、小结 一、Rawchat简介 RawChat平台的诞生&#xff0c;其核心理念是降低用户访问类似ChatGPT这类先进AI服务的门…

Git使用-gitlab上面的项目如何整到本地的idea中

场景 一般我们在开发项目或者接手某个项目时&#xff0c;基本都要接触Git&#xff0c;比如上传项目代码&#xff0c;下载同事给你的交接代码等等。 这是一个基本功&#xff0c;小小整理一下日常操作中的使用。 第一步&#xff1a;在 GitLab 上找到你要克隆的项目&#xff0c;复…

干部管理软件有哪些

随着信息技术的飞速发展&#xff0c;干部管理软件在各级党政机关、国企事业单位中扮演着越来越重要的角色。这些软件通过整合干部管理的各项业务流程&#xff0c;实现了干部信息的系统化、规范化和高效化管理。以下是几款主流的干部管理软件及其特点&#xff1a; 一、干部信息…

QT小技巧

QT小技巧 滑条的美化 美化前 代码如下 //滑条的美化ui->horizontalSlider->setStyleSheet("QSlider::groove:horizontal {""border:1px solid skyblue;""background-color:skyblue;""height:10px;""border-radius:5px…

NFS网络文件存储入门

一、NFS介绍 NFS全称Network Files System&#xff0c;中文叫网络文件系统&#xff0c;是1980年由SUN发展出来在UNIX&Linux系统间实现磁盘文件共享的一种方法。NFS是当前互联网系统架构中最常用的服务之一&#xff0c;特别是中小公司应用频率很高。大公司可能用MFS&#x…

Nextjs 集成富文本编辑器react-quill

目录 一、组件代码 二、参考文档 由于Next与react有些差别&#xff0c;直接调用组件会报无法找到文档的错误&#xff0c;于是我们只有考虑动态导入了解决问题。因为富文本编辑器一般作用与form页面对SEO意义不大&#xff0c;所以这里可以考虑暂时关闭SSR。 一、组件代码 /*…

【系统架构】REST风格

系列文章目录 第一章 系统架构的演进 第二章 REST风格架构 文章目录 系列文章目录前言一、进程间的通信普通管道&#xff08;Pipe&#xff09;或者具名管道&#xff08;Named Pipe&#xff09;信号&#xff08;Signal&#xff09;信号量&#xff08;Semaphore&#xff09;消息…

C++ 字符串处理5-手机号邮箱如何脱敏处理

1. 关键词2. strutil.h3. strutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 关键词&#xff1a; C 字符串处理 分割字符串 连接字符串 跨平台 应用场景&#xff1a; 有些重要信息需要保密&#xff0c;比如手机号、邮箱等&#xff0c;如何在不影响用户阅读的情况下…

Hadoop之HDFS分布式文件系统

HDFS简介 Hadoop Distributed File System (HDFS): HDFS 是 Hadoop 的分布式文件系统,它设计用于存储大量数据,并提供 高吞吐率的数据访问,通过将数据分块存储在多个节点上,实现数据的冗余存储和容错。 HDFS重要概念 HDFS 通过统一的命名空间目录树来定位文件; 另外,它…

zookeeper、kakfa添加用户加密

背景 zookeeper无权限访问到根目录 步骤 在kafka/config 目录中创建 vi config/zookeeper_jaas.conf在zookeeper_jaas.conf中添加 Server { org.apache.kafka.common.security.plain.PlainLoginModule required username"admin" password"12345" user_ad…

温泉镇旅游微信小程序的设计与实现(论文+源码)_kaic

摘要 旅游业随着经济的快速发展呈现出一派欣欣向荣的景象&#xff0c;尤其是近两年来&#xff0c;各个行业运用科技以及因特网来促进旅游迅速发展&#xff0c;逐渐都显示出了的问题&#xff0c;特别突出的是在线上推广&#xff0c;其缺点也是特别明显。尽管在新冠肺炎的冲击下&…

uni-app前端,社区团购系统搭建部署

目录 前言&#xff1a; 一、社区团购模式&#xff1a; 二、社区团购系统功能&#xff1a; 三、总结&#xff1a; 前言&#xff1a; 区团购系统是一种利用互联网技术和组织力量&#xff0c;通过线上线下结合的方式&#xff0c;为社区居民提供方便快捷的商品和服务采购平台。…