热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Flask搭建在线图像处理服务器

任务描述机器人需要在运行过程中拍摄图片并获得检测结果,机器人上的电脑处理太慢,所以想把图像处理的程序放在服务器上,机器人需要检测的时候,把拍摄的图像和处理需求发送到服务器,服务器

任务描述

机器人需要在运行过程中拍摄图片并获得检测结果,机器人上的电脑处理太慢,所以想把图像处理的程序放在服务器上,机器人需要检测的时候,把拍摄的图像和处理需求发送到服务器,服务器处理后,把检测的结果发送回机器人。


系统架构

一台服务器,一台独立电脑,两台电脑需要在同一个局域网下


代码


1、服务器 主文件

# -*- coding: UTF-8 -*-from flask import request, Flask
import os
import cv2
from traffic.TrafficNet import TrafficNet
app = Flask(__name__) # 必须要写def trafficPredict(img_path):pred_ret = trafficNet.predict(img_path) # 调用图像处理函数return pred_ret@app.route("/", methods=['POST'])
def get_frame(): # 客户端通过端口访问的时候,会直接调用这个函数upload_file = request.files['file'] # 根据键获取数据file_name = upload_file.filename # 获取文件名file_path = os.path.join('/home/wangdx/research/mir_robot/server/getImgs', file_name)if upload_file: # 如果接收到文件,先保存下载upload_file.save(file_path)result = trafficPredict(file_path) # 图像处理入口toClient = str({'cls': int(result)})print("success")return toClientelse:return 'failed'if __name__ == "__main__":trafficNet = TrafficNet() # 神经网络初始化app.run("0.0.0.0", port=1212) # 设置IP和端口

注意点
服务器端的IP可以设置为"0.0.0.0",这样客户端就可以通过服务器端的真实IP访问到;端口随便设置,没被其他程序占用就行。


2、客户端 主文件

import requests
import os
import timeurl = "http://180.201.5.159:1212" # 服务器的IP
files = os.listdir('./demo') # 我存放测试图像的文件夹
file_dirs = [os.path.join('./demo', f) for f in files]start_time = time.time() # 开始计时for img in file_dirs:file = open(img, 'rb') # 使用open读取文件,比直接发送图像数据更快files = {'file': (os.path.basename(img), file, 'image/ppm')} # 构建发送格式r = requests.post(url, files=files) # 发送,并获取返回的结果result = r.text # 获取发送回来的字符串,后面再把字符串转换成其他可以处理的格式print(result)sum_t = time.time() - start_time
print('sum time: ', sum_t)

注意
访问服务器时的IP不要写服务器设置的IP"0.0.0.0",要写服务器真正的IP,我的服务器的IP是180.201.5.159

完整的程序请参考我的github:


https://github.com/dexin-wang/flask_communication_py


客户端向服务器发送ppm格式的图像,服务器运行交通标志识别,再将识别结果发回客户端。demo里的图像都是类别0的。使用的数据集是BelgiumTSC,网址:


https://btsd.ethz.ch/shareddata/


关于Flask的其他基础使用,可以参考:


https://blog.csdn.net/stesha_chen/article/details/82768510



推荐阅读
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Tornado框架中模块与静态文件的应用
    本文详细介绍了Tornado框架中模块和静态文件的使用方法。首先明确模块与模板的区别,然后通过具体的代码示例展示如何在HTML文档中使用模块,并配置模块的路由。最后,提供了模块类中参数获取的示例。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文是Java并发编程系列的开篇之作,将详细解析Java 1.5及以上版本中提供的并发工具。文章假设读者已经具备同步和易失性关键字的基本知识,重点介绍信号量机制的内部工作原理及其在实际开发中的应用。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
author-avatar
快乐小天使2602926543
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有