yolov5face+arcface识别后结果图像POST给FLASK后端,前端页面图片不显示

打开摄像头给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代码如下:

img

实时传输检测结果流显示不出来(POST传单张图片也无法显示):

img

content/type 把我的multipart/x-mixed-replace转为了text/html

  1. 先解决问题,我留意到你代码中有将文件写到本地文件的代码,使用最简单的方式直接返回这个文件,看流程通不通,定位下问题
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')
  1. 优化方案,调查中

看看接口返回的结果,把图片地址加上本机ip复制到浏览器,看看浏览器有没有图片显示,有的话就是你前端代码那里有问题,没有的话看看返回的图片格式,可能是base64,转换才能显示
参考链接,希望有帮助哦


yolov5在线检测目标检测网页实时识别python目标检测flask_babyai996的博客-CSDN博客_在线目标检测 yolov5在线检测目标检测网页实时识别python目标检测flaskyolov5在线检测目标检测网页实时识别python目标检测flask_哔哩哔哩_bilibili https://blog.csdn.net/babyai996/article/details/123922138?ops_request_misc=&request_id=&biz_id=102&utm_term=yolov5face+arcface%E8%AF%86%E5%88%AB%E5%90%8E%E7%BB%93%E6%9E%9C%E5%9B%BE%E5%83%8FPOST%E7%BB%99&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-3-123922138.nonecase&spm=1018.2226.3001.4450