Commit 0e70ac17 by wangquyuan

add by wqy

1 parent 9466c72f
Showing with 24 additions and 9 deletions
......@@ -37,7 +37,8 @@ Content-Type:"application/x-www-form-urlencoded"
code: 整数, 0:成功,其它失败
msg: 字符串,说明错误原因
data: 情绪是一个长度为7的浮点数组。原文档中有序列号,这是可以取消的,因为数组本来就是有序的。对于视频分析应答,可以大大减少应答包长度。 情绪结果,[平静、快乐、愤怒、惊讶、厌恶、悲伤、恐惧]
data: 情绪是一个长度为7的浮点数组。原文档中有序列号,这是可以取消的,因为数组本来就是有序的。对于视频分析应答,可以大大减少应答包长度。 情绪结果:["平静","愤怒","厌恶","恐惧","高兴","伤心","惊讶"]
示例:
......@@ -123,7 +124,10 @@ Content-Type:"multipart/form-data"
"data": {
"resultData": {
"blinkNum": 0,
"heartRate": 74
"heartRate": 74,
"fps":20,
"frames":440,
"valid_frames":400
},
"userFaces": ["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"],
"srcData": [{
......
......@@ -908,8 +908,9 @@ void Rotate(const cv::Mat & src, cv::Mat &dst, int rotate)
warpAffine(src, dst, m, cv::Size(src.cols,src.rows));
}
static void do_heart_rate( const std::string &videofile, int nrotate, int *rate, void *hearts )
static void do_heart_rate( const std::string &videofile, int nrotate, int *rate, void *hearts, int * pfps )
{
*pfps = 0;
*rate = 0;
std::vector<int> * phearts = (std::vector<int> *)hearts;
phearts->clear();
......@@ -935,6 +936,7 @@ static void do_heart_rate( const std::string &videofile, int nrotate, int *rate,
int fps = m_capture->get( cv::CAP_PROP_FPS);
std::cout << "do_heart fps:" << fps << std::endl;
*pfps = fps;
if(fps < 1 )
{
fps = 20;
......@@ -1116,11 +1118,14 @@ static void do_video( const std::string &videofile, int frameNum, int nrotate, i
std::vector<std::vector<float>> &face_poses,
std::vector<std::vector<float>> &face_actions,
std::vector<std::vector<float>> &face_emotions,
std::vector<int> &blink_eyes
std::vector<int> &blink_eyes, unsigned long *total_frames, unsigned long *valid_frames
)
{
*eyes = 0;
*total_frames = 0;
*valid_frames = 0;
cv::VideoCapture *m_capture = NULL;
int num = 0;
try
{
......@@ -1148,7 +1153,7 @@ static void do_video( const std::string &videofile, int frameNum, int nrotate, i
//std::vector<double> rates;
cv::Mat mat;
//int nheartrate = 0;
int num = 0;
//int num = 0;
seeta::EyeStateDetector::EYE_STATE m_leftstate, m_rightstate;
m_leftstate = m_rightstate = seeta::EyeStateDetector::EYE_UNKNOWN;
......@@ -1182,6 +1187,7 @@ static void do_video( const std::string &videofile, int frameNum, int nrotate, i
continue;
}
//cv::Mat mat2;
//cv::Size size (VIDEO_WIDTH, VIDEO_HEIGHT);
//cv::resize(mat, mat2, size, 0, 0, cv::INTER_CUBIC);
......@@ -1204,7 +1210,7 @@ static void do_video( const std::string &videofile, int frameNum, int nrotate, i
img.data = mat.data;
}
*total_frames = (*total_frames) + 1;
//SeetaImageData img;
//img.width = mat.cols;
//img.height = mat.rows;
......@@ -1327,6 +1333,7 @@ static void do_video( const std::string &videofile, int frameNum, int nrotate, i
delete m_capture;
}
//*rate = nheartrate;
*valid_frames = num;
return;
}
......@@ -1610,6 +1617,10 @@ void on_http( httpserver *s, websocketpp::connection_hdl hdl )
int hearts = 0;
int eyes = 0;
int fps = 0;
unsigned long total_frames = 0;
unsigned long valid_frames = 0;
std::vector<std::vector<float>> face_features;
std::vector<std::vector<float>> face_poses;
std::vector<std::vector<float>> face_actions;
......@@ -1622,9 +1633,9 @@ void on_http( httpserver *s, websocketpp::connection_hdl hdl )
int nrotate = get_video_rotate(filename);
nrotate = nrotate * -1;
std::thread heartrate_thread(do_heart_rate, filename, nrotate, &hearts, &heart_beats);
std::thread heartrate_thread(do_heart_rate, filename, nrotate, &hearts, &heart_beats, &fps);
do_video(filename, frameNum, nrotate, &eyes, face_features,
face_poses,face_actions,face_emotions, blink_eyes);
face_poses,face_actions,face_emotions, blink_eyes, &total_frames, &valid_frames);
heartrate_thread.join();
......@@ -1632,7 +1643,7 @@ void on_http( httpserver *s, websocketpp::connection_hdl hdl )
//remove( filename.c_str() );
strresponse = "{\"code\":" + std::to_string(nret) + ",\"msg\":\"" + GetError( nret ) + "\",\"data\":{";
strresponse += "\"resultData\":{\"blinkNum\":" + std::to_string(eyes) + ",\"heartRate\":" + std::to_string(hearts) + "}";
strresponse += "\"resultData\":{\"blinkNum\":" + std::to_string(eyes) + ",\"heartRate\":" + std::to_string(hearts) + ",\"fps\":" + std::to_string(fps) + ",\"frames\":" + std::to_string(total_frames) + ",\"valid_frames\":" + std::to_string(valid_frames) + "}";
strresponse += ",\"userFaces\":[";
for(int i=0; i<face_features.size(); i++)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!