为什么要分享这个网络推图呢,因为我们在postman测试的时候,有时候是要用上带网址的图片(实时推图测试)做测试的。这时候就需要模拟网络推图了,不是简单的本地图片测试了。
所以,我们需要启动一个推图服务。如何启动一个推图服务呢,下面代码可以实现
夸克网盘也收费了,不分享代码链接了,直接上代码吧!
#coding:utf-8
import cv2
from PIL import Image, ImageFont, ImageDraw
from gevent import monkey
from gevent.pywsgi import WSGIServer
monkey.patch_all()
from flask import Flask, request,send_file
import json,requests
import traceback
import datetime
import random
import time
import os,argparse
import numpy as np
import sys
app = Flask(__name__)
class NpEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, np.integer):
return int(obj)
elif isinstance(obj, np.floating):
return float(obj)
elif isinstance(obj, np.ndarray):
return obj.tolist()
else:
return super(NpEncoder, self).default(obj)
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
return os.path.join(base_path, relative_path)
@app.route('/<string:images>/<string:img_dir>/<string:img_name>', methods=['get'])
def get_url_args1(images,img_dir, img_name):
root_dir = resource_path(images)
print('root_dir',root_dir)
img_path = os.path.join(root_dir, img_dir, img_name)
return send_file(img_path)
@app.route('/submit_data_sd', methods=['POST'])
def my_json():
result =[]
upload_file = request.files['file']
if not upload_file:
result = json.dumps({'code': 601, 'result': 'null', 'img_url': 'null', 'msg': '未接收到图片'}, ensure_ascii=False)
else:
classes = request.form.get('classes')
if classes is None:
classes = []
vis_th = request.form.get('vis_thresh')
clientIp = request.remote_addr
receive_file = upload_file.filename
# 年-月-日
dayTime = datetime.datetime.now().strftime('%Y-%m-%d')
pwd_receive = os.path.join(resource_path('images/receive') + os.path.sep +dayTime)
#uniqueNum = time.strftime("%Y%m%d%H%M%S") # 生成当前的时间
# old_file_name = uniqueNum + '.jpg'
oldname = receive_file.split('.')[0]
new_file_name = oldname + '_res' + '.jpg'
# 判断文件夹是否已存在
isExists = os.path.exists(pwd_receive)
if not isExists:
os.makedirs(pwd_receive)
if upload_file:
img_name = os.path.join(pwd_receive, new_file_name)
upload_file.save(img_name)
print('save_img',img_name)
return str(result)
if __name__ == '__main__':
serverip = '10.168.1.210'
serverport = 8005
print("===========启动成功===============")
print('本地IP:{} 监听端口:{}'.format(serverip,serverport))
WSGIServer((serverip, int(serverport)), app).serve_forever()
那么怎么使用这个代码呢。要安装不少库的,装库请关注我其他帖子。至少要能运行python的环境。对了,我这个推图服务是在linux服务器运行的。
首先查询现有环境
conda info -e
添加图片注释,不超过 140 字(可选)
然后用source activate centernet 进入 centernet 环境
在这环境下运行代码即可。代码必须与data文件夹同目录,并且图片放在data目录下的image文件夹里面。这样,image里面的图片就可以作为网络推图测试了。
在postman,可以直接获取这张网图,注意调用的路径是服务器IP加端口8005,然后是/data/image/图片名字即可。如:http://10.168.1.210:8005/data/image/xjj .jpg
调用测试。