POST一张图片到服务端,服务端调用SSD_Detection.py对图片进行目标检测,返回检测结果(检测框数据)
sever端
#! -*- coding:utf-8 -*-
#!/usr/bin/python
from http.server import BaseHTTPRequestHandler,HTTPServer
import cgi
import cv2
import numpy as np
from SSD_Detection import SSD_Detection #有一个SSD_Detection.py的文件里面放了关于图片目标检测的相关程序,这里不给出这个程序
import socket
detector = SSD_Detection(0.10)#构建检测模型对象
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.wfile.write("这是一个http后台服务。".encode())
def do_POST(self):
'''
获取POST的单张图片数据,利用目标检测程序,返回检测结果(json数据)
'''
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST',
'CONTENT_TYPE':self.headers['Content-Type'],
}
)
#print("键值:",form.keys())
self.send_response(200)
self.end_headers()
imageData = form['file'].value#获取图片数据
#imageData = form.getvalue('search')
imageNp = np.asarray(bytearray(imageData), dtype="uint8")
image = cv2.imdecode(imageNp, cv2.IMREAD_COLOR)
image[:, :, [0, 1, 2]] = image[:, :, [2, 1, 0]]#BGR转RGB
jsonData = detector.getJsonData(detector.detect_single_image(image))#获得检测结果框
#csvData = detector.getCsvData(detector.detect_single_image(image))
self.wfile.write(jsonData.encode())
def main():
try:
server=HTTPServer(('127.0.0.1',8080),MyHandler) #启动服务
print ('welcome to the server.......')
server.serve_forever()# 一直运行
except KeyboardInterrupt:
print ('shuting done server')
server.socket.close()
if __name__=='__main__':
main()
客户端:
#coding=utf-8
import requests
url = 'http://localhost:8080'
path = u'/media/a/DATA/test.jpg'
#path='./test.jpg'
print (path)
#files = {'file': ('1.jpg',open(path, 'rb'))}
files = {'file': open(path, 'rb')}
r = requests.post(url, files=files)
print ("检测框:",r.text)