介绍 <强>四,向服务器发送图片强>
小编给大家分享一下如何使用python实现监控视频人数统计,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!
一、图示
客户端请求输入一段视频或者一个视频流,输出人数或其他目标数量,上报给上层服务器端,即提供一个http API调用算法统计出人数,最终http上报总人数
二,准备
相关技术<强> python pytorch opencv http协议后请求强>
<强>瓶强>
瓶是一个python实现网络开发的微框架,对于像我对网页框架不熟悉的人来说还是比较容易上手的。
<强>瓶安装强>
sudo pip install 瓶
<强>三,一个简单服务器应用强>
为了稍微了解一下瓶是如何使用的,先做一个简单的服务器例子。
第一个文件你好。py .
得到flask import 瓶 app =,瓶(__name__) , @app.route (“/? def hello (): return 才能;& # 39;hello 世界! & # 39; , @app.route (“/python") def hello_python (): return 才能;& # 39;hello python ! & # 39; , if __name__ ==, & # 39; __main__ # 39;: app.run才能(主机=& # 39;0.0.0.0 # 39;)
app.run(主机=' 0.0.0.0 # 39;)表示现在设定的ip为0.0.0.0,并且设定为0.0.0.0是非常方便的,如果你是在一台远程电脑上设置服务器,并且那台远程电脑的ip是172.1.1.1,那么在本地的电脑上可以设定ip为172.1.1.1来向服务器发起请求。
@app.route(& # 39;/& # 39;)表示发送请求的地址是http://0.0.0.0:5000, @app.route (“/python")表示发送请求的地址为http://0.0.0.0:5000 python。
第二个文件是request.py
import 请求 , 时间=url & # 39; http://0.0.0.0:5000 & # 39; 时间=r requests.get (url) 打印(r.status_code) 打印(r.text) , 时间=url & # 39; http://0.0.0.0:5000 python # 39; 时间=r requests.get (url) 打印(r.status_code) 打印(r.text)
<强>四,向服务器发送图片强>
服务器代码
#编码:utf - 8 得到flask import 请求,烧瓶 import 操作系统 app =,瓶(__name__) , @app.route(“/?,,方法=[& # 39;文章# 39;]) def get_frame (): 时间=upload_file 才能;request.files[& # 39;文件# 39;】 old_file_name 才能=upload_file.filename file_path 才能=,os.path.join(& # 39;/地方/分享/DeepLearning& # 39;,, & # 39;新# 39;,+,old_file_name) , if 才能;upload_file: ,,,,,upload_file.save (file_path) ,,,,,print “success" ,,,,,return & # 39;成功# 39; 其他的才能: ,,,,,return & # 39;失败# 39; , , if __name__ ==,“__main__": ,,,app.run (“0.0.0.0",,端口=5000)
<强>客户端代码强>
import 请求 , 时间=url “http://0.0.0.0:5000" , filepath=& # 39;。/t2.jpg& # 39; 时间=split_path filepath.split (& # 39;/& # 39; 时间=filename split_path [1] 打印(文件名) ,=file 开放(filepath, & # 39; rb # 39;) files =,{& # 39;文件# 39;:(文件名,文件,& # 39;图像/jpg # 39;)} , 时间=r requests.post (=url, files 文件) result =r.text print 结果
这种情况长传图片是最快的,比用opencv先打开后传递象素级的数字要快很多。
五,最终关键yolov5调用代码:
# !/usr/bin/env python #,- *安康;编码:utf-8 - * - #,@Time ,,,: 2021/2/20 18:19 #,@Author ,: xiaorun #,@Site ,,,,, #,@File ,,,: yoloDetect.py #,@Software: PyCharm import 系统 import 线程 得到threading import 线程 import 时间 import 操作系统 import cv2 得到yolo import  YOLO5 import jsonify json import 请求 import 瓶 得到flask import 请求 headers =,{& # 39;内容类型# 39;:,& # 39;application/json # 39;} url_addr=癶ttp://123.206.106.55:8065/api/视频/getPersonNum/? #,创建一个服务,把当前这个python文件当做一个服务 时间=server flask.Flask (__name__) server.debug =,真的 def gen_detector (url_video): ,,,yolo =, YOLO5 () ,,,opt =, parseData () ,,,yolo.set_config (opt.device, opt.weights,还以为,opt.img_size, opt.conf_thres,, opt.iou_thres,,真的) ,,,yolo.load_model () ,,,camera =, cv2.VideoCapture (url_video) ,,,#,读取视频的fps,,,大小 ,,,fps =, camera.get (cv2.CAP_PROP_FPS) ,,,size =, (camera.get (cv2.CAP_PROP_FRAME_WIDTH), camera.get (cv2.CAP_PROP_FRAME_HEIGHT)) ,,,print (“fps: {} \ nsize:, {}“.format (fps,大小)) ,,,#,读取视频时长(帧总数) ,,,total =, int (camera.get (cv2.CAP_PROP_FRAME_COUNT)) null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何使用python实现监控视频人数统计