from PIL import Image import numpy as np import cv2 import base64 import io,os import requests import time def test(): image_path='test/P0017.png' image_array=cv2.imread(image_path) print(image_array.shape) image_encode=base64.b64encode(image_array).decode('utf-8') image_bytes=bytes(image_encode,encoding='utf-8') image_decode=np.frombuffer(base64.decodebytes(image_bytes),dtype=np.uint8) print(image_decode.shape) request_url='http://192.168.109.49:5000/' headers={'content-type':'application/json'} data={'image':image_encode} #response=requests.post(request_url,data=data,headers=headers) response=requests.post(request_url,"POST",files=data) print(response) #image=open(image_path,'rb').read() #image=Image.open(io.BytesIO(image)) #image=image.resize((224,224)) #image=np.asarray(image def test2(): image_path='test/P0017.png' image_ori=cv2.imread(image_path) api = 'http://192.168.16.45:8000/detector' img = cv2.imencode('.jpg', image_ori)[-1] #image_encode=base64.b64encode(image_ori).decode('utf-8') #img=bytes(image_encode,encoding='utf-8') #h,w,c=image_ori.shape files = {'file': img} files = {'file': img,'name':'P0017' } res = requests.request("POST", api, files=files).json() if res['msg'] == 'success': bboxes = res['data']['bboxes'] print(bboxes) #bboxes = np.asarray(bboxes, dtype=np.int32) def get_file_content(filePath): with open(filePath, 'rb') as fp: return fp.read() def test3(): image_path='test/P0017.png' image_ori=cv2.imread(image_path) api = 'http://192.168.16.45:8000/detector' #img = cv2.imencode('.jpg', img_ori)[-1] input_ ={ 'img_data':'', 'img_width':512, 'img_height':512, 'img_chs':3 } with open(image_path,'rb') as f: input_['img_data']=base64.b64encode(f.read()).decode('utf-8') image_encode=base64.b64encode(image_ori).decode('utf-8') image_bytes=bytes(image_encode,encoding='utf-8') #input_['img_data']=image_bytes response=requests.post(api,json=input_).json() print(response['msg'],response['data']['bboxes']) ###---客户端:读取图片:image_ori=cv2.imread(image_path)--->编码base64.b64encode(f.read()).decode('utf-8') ,(C,H,W) ###---服务器端:字节化image_bytes=bytes(img_data,encoding='utf-8')-->解码img_data=np.frombuffer(base64.decodebytes(image_bytes),dtype=np.uint8)-->reshape:mg_data=img_data.reshape(h,w,3) def test4(): image_path='test/P0017.png' image_ori=cv2.imread(image_path) api = 'http://192.168.16.45:8000/detector' #img = cv2.imencode('.jpg', img_ori)[-1] h,w,c = image_ori.shape input_ ={ 'img_data':'', 'img_width':h, 'img_height':w, 'img_chs':c } print('input:',input_) ##decode('utf-8'),有没有好像都行。 input_['img_data']=base64.b64encode(image_ori).decode('utf-8') response=requests.post(api,json=input_).json() print(response['msg'],response['data']['bboxes']) def decode_encode(): ##对文件b64编码,b64解码存储 image_path='test/P0017.png' with open(image_path,'rb') as fp: encode_img = base64.b64encode(fp.read()) with open('t2.png','wb') as f2: f2.write(base64.b64decode(encode_img)) ##输入时数组-->opencv编码jpg字节流-->存储图片文件 image_path='test/P0017.png' image_ori=cv2.imread(image_path) image_bytes = cv2.imencode(".png",image_ori)[1].tobytes() with open('bytes2image.png') as fp: fp.write(image_bytes) ###字节流到数组用cv2.imdecode(np.frombuffer(image_bytes,np.uint8),1) with open(image_path,'rb') as fp: image_bytes2 = fp.read() image_array = cv2.imdecode(np.frombuffer(image_bytes2,np.uint8),1) ##输入时数组-->opencv编码jpg字节流-->存储图片文件 image_path='test/P0017.png' image_ori=cv2.imread(image_path) image_bytes = cv2.imencode(".png",image_ori)[1].tobytes() with open('bytes2image.png') as fp: fp.write(image_bytes) ##image_array-- image_path='test/P0017.png' image_ori=cv2.imread(image_path) image_encode=base64.b64encode(image_ori).decode('utf-8') image_bytes=bytes(image_encode,encoding='utf-8') img_data=np.frombuffer(base64.decodebytes(image_bytes),dtype=np.uint8) def test5(): import json ##输入时数组-->opencv编码jpg字节流-->存储图片文件 image_path='imgs/DJI_0445.JPG' image_dir = '/home/thsw2/WJ/data/THexit/val/images/' filelist = os.listdir(image_dir) time0 = time.time() for filename in filelist: image_path = os.path.join(image_dir,filename) image_ori=cv2.imread(image_path) image_ori = cv2.resize(image_ori, (0, 0), fx=0.25, fy=0.25, interpolation=cv2.INTER_NEAREST) image_pngcode = cv2.imencode(".jpg",image_ori)[-1] api = 'http://192.168.10.10:8000/detector' #api = 'http://47.98.157.120:9040/api/taskFile/submitUAVKHQuestion' #api = 'http://192.168.0.100:9040' h,w,c = image_ori.shape input_ ={ 'imgData':'', #'img_width':h, #'img_height':w, #'img_chs':c, 'imgName':filename } #print('input:',input_ ) t1 = time.time() image_code = str(base64.b64encode(image_pngcode))[2:-1] #print( image_code) input_['imgData']=image_code t2 = time.time() response=requests.post(api,json=input_).json() t3 = time.time() print('bs encodetime:%.5f request time:%.5f \n'%(t2-t1,t3-t2)) t1_bytes = bytes(image_code,encoding='utf-8') t2_bs64decode = base64.b64decode(t1_bytes) img_data = cv2.imdecode(np.frombuffer(base64.b64decode( bytes(image_code,encoding='utf-8')),dtype=np.uint8),1) #print(response['code'],response['data']['bboxes']) print('Return:',response['data']['bboxes'],' img data shape:',img_data.shape) time2 = time.time() print('average time:',(time2-time0)/len(filelist)) if __name__=='__main__': test5()