@app.route('/face2DAll',methods = ['POST'])
def face2DAll():
    '''
    人脸视频分析API接口

    接收POST请求,处理上传的视频文件,进行人脸特征分析。

    Args:
        无

    Returns:
        JSON格式响应,包含处理结果和人脸特征数据:
            - succeed: 处理是否成功 (True/False)
            - msg: 处理结果信息
            - all_leyes: 所有帧左眼比例列表
            - all_reyes: 所有帧右眼比例列表
            - all_mouthes: 所有帧嘴巴比例列表
            - all_eulers: 所有帧欧拉角列表
            - framenum: 视频总帧数
    '''
    if request.method == 'POST':
        print('************ enter face video process ************')
        data = {'succeed':False,'msg':'no video find','all_leyes':[],'all_reyes':[],'all_mouthes':[],'all_eulers':[],'framenum':0}
        if 'name' not in request.form:
            return jsonify(data)
        else:            
            filename = request.form['name']
            video_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
            if not os.path.exists(video_path):
                data['msg'] = 'video not uploaded in server'
                return jsonify(data)
            cap = cv2.VideoCapture(video_path)
            alldata = []
            frame_idx = 0
            print('total frame:',cap.get(7))
            leyes = []
            reyes = []
            mouthes = []
            eulers = []
            while(cap.isOpened()):         
                progress(frame_idx/cap.get(7)*100,width=30)                 
                ret,img = cap.read()
                if ret is not False:
                    _,_,leye_ratio,reye_ratio,mouth_ratio,euler_angles = facemodel.detect(img)
                    leyes.append(leye_ratio.item())
                    reyes.append(reye_ratio.item())
                    mouthes.append(mouth_ratio.item())
                    eulers.append(euler_angles)
                    frame_idx = frame_idx + 1
                else:
                    data['succeed'] = True
                    data['msg'] = 'Finish'
                    data['all_leyes'] = leyes
                    data['all_reyes'] = reyes
                    data['all_mouthes'] = mouthes
                    data['all_eulers'] = np.squeeze(np.array(eulers,dtype=np.float32).reshape((-1,1))).tolist()
                    data['framenum'] = frame_idx
                    return jsonify(data)

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0', port = 6666) #deployment
    # serve(app, host='0.0.0.0', port=5555) #product
Flask人脸视频分析API接口

原文地址: https://www.cveoy.top/t/topic/f0kN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录