打开摄像头给yolov5-face+arcface检测后,将图像源源不断的POST给FLASK服务器,再GET给前端。
FLASK服务器主要代码:
def video_feed2():
if request.method == 'GET':
return "ok", 200
if request.method == 'POST':
start = time.time()
data = request.get_data()
json_data = json.loads(data)
img_base64 = json_data['image']
img_base64 = base64_to_cv2(img_base64) #base64转cv2,获取图片数据
return Response(gen2(img_base64), mimetype='multipart/x-mixed-replace; boundary=frame')
def gen2(img):
# cv2.imwrite("static/tmp.jpg", img) #图像能存在本地,说明图像并没有损坏
image = cv2.imencode('.jpg', img)[1].tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpg\r\n\r\n' + image + b'\r\n')
if name == 'main':
debug = False
app.run(host='127.0.0.1', threaded=True, port=5001)
index.html代码如下:
实时传输检测结果流显示不出来(POST传单张图片也无法显示):
content/type 把我的multipart/x-mixed-replace转为了text/html
from flask import send_file
from flask import Flask
app=Flask(__name__)
@app.route('/pic',methods = ['POST','GET'])
def returnPictureExample():
return send_file('./static/success.jpg', mimetype='image/gif')
看看接口返回的结果,把图片地址加上本机ip复制到浏览器,看看浏览器有没有图片显示,有的话就是你前端代码那里有问题,没有的话看看返回的图片格式,可能是base64,转换才能显示
参考链接,希望有帮助哦