tornado调用tensorflow模型对视频进行处理

2024-06-03 22:32

本文主要是介绍tornado调用tensorflow模型对视频进行处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系统环境:

linux系统:ubuntu16.04

tensorflow:tensorflow-1.13.1-cp35-cp35m-linux_x86_64.whl

python:3.5

OpenCV:3.4.5

 

1、安装tornado

sudo apt install python3-pip
pip3 install tornado

查看版本号,安装完成

2、运行官方例程 helloworld.py

import tornado.ioloop
import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.write("Hello, world")def make_app():return tornado.web.Application([(r"/", MainHandler),])if __name__ == "__main__":app = make_app()app.listen(8888)tornado.ioloop.IOLoop.current().start()
python3 helloworld.py

打开浏览器,输入http://127.0.0.1:8888即可

3、tornado调用tensorflow模型对视频进行处理

服务端代码video_server.py如下:

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import requests
import base64
from PIL import Image
from io import BytesIO
import numpy as np
import cv2
import jsonfrom tornado.options import define, optionsfrom tf_human_pose_pb import runVideotensorflow_model = r"/mnt/c/workspace/code/model.pb"# http://127.0.0.1:8888/video
define("port", default=8888, help="run on the given port", type=int)class MainHandler(tornado.web.RequestHandler):def get(self):self.write("run demo ......")class testHandler(tornado.web.RequestHandler):def get(self):self.write("test!!!")def post(self):## using json jsonbyte = self.request.bodyjsonstr = jsonbyte.decode('utf8')args = json.loads(jsonstr)video_url = args.get('video_url')if video_url is not None:to_return = {}output = runVideo(video_url,tensorflow_model)to_return['result'] = outputself.write(json.dumps(to_return))else:self.write_error(401)returndef main():tornado.options.parse_command_line()application = tornado.web.Application([(r"/", MainHandler), (r"/video",testHandler)])http_server = tornado.httpserver.HTTPServer(application)http_server.listen(options.port,address='0.0.0.0')tornado.ioloop.IOLoop.current().start()if __name__ == "__main__":main()

客户端代码http_client.py如下:

import requests
import jsonresponse = requests.post('http://XXX.XXX.XXX.XXX:8888/video', json.dumps({"video_url": "https://XXXXXXXXXX视频下载地址XXXXXXXXXXX"}))
print(response.json())

先运行服务端代码,再运行客户端代码,可以在服务端的命令行窗口那看到显示下面这行信息

 

其他的测试工具,可以用Postman或者火狐浏览器的插件RESTClient

在浏览器附加组件选项中搜索RESTClient,如下图

添加启用该组件后就可以愉快地玩耍了

 

参考链接

tornad官网:https://www.tornadoweb.org/en/stable/

 

这篇关于tornado调用tensorflow模型对视频进行处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028291

相关文章

Java调用DeepSeek API的8个高频坑与解决方法

《Java调用DeepSeekAPI的8个高频坑与解决方法》现在大模型开发特别火,DeepSeek因为中文理解好、反应快、还便宜,不少Java开发者都用它,本文整理了最常踩的8个坑,希望对... 目录引言一、坑 1:Token 过期未处理,鉴权异常引发服务中断问题本质典型错误代码解决方案:实现 Token

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

在C#中调用Windows防火墙界面的常见方式

《在C#中调用Windows防火墙界面的常见方式》在C#中调用Windows防火墙界面(基础设置或高级安全设置),可以使用进程启动(Process.Start)或Win32API来实现,所以本文给大家... 目录引言1. 直接启动防火墙界面(1) 打开基本防火墙设置(firewall.cpl)(2) 打开高

python调用dubbo接口的实现步骤

《python调用dubbo接口的实现步骤》本文主要介绍了python调用dubbo接口的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录 ​​其他实现方式与注意事项​​ ​​高级技巧与集成​​用 python 提供 Dubbo 接口

C# 空值处理运算符??、?. 及其它常用符号

《C#空值处理运算符??、?.及其它常用符号》本文主要介绍了C#空值处理运算符??、?.及其它常用符号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、核心运算符:直接解决空值问题1.??空合并运算符2.?.空条件运算符二、辅助运算符:扩展空值处理

浅析Python中如何处理Socket超时

《浅析Python中如何处理Socket超时》在网络编程中,Socket是实现网络通信的基础,本文将深入探讨Python中如何处理Socket超时,并提供完整的代码示例和最佳实践,希望对大家有所帮助... 目录开篇引言核心要点逐一深入讲解每个要点1. 设置Socket超时2. 处理超时异常3. 使用sele