用python3搭建http通信

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)

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值