123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #ifndef ASJ_STANDINGJUMP_H
- #define ASJ_STANDINGJUMP_H
- #include <iostream>
- #include <string>
- #include <unistd.h>
- #include <vector>
- #include <cmath>
- #include <queue>
- #include <sys/time.h>
- #include <cstring>
- #include <algorithm>
- #include <limits>
- #include <opencv2/opencv.hpp>
- #include "dl_api.h"
- #include "PEStatus.h"
- #include "queue.h"
- #include "asj_pe_base.h"
- enum SportStatus
- {
- None,
- PREPARE,
- JUMP,
- END,
- };
- typedef struct
- {
- float xDis, yDis, xyDis;
- }Distance_ST;
- typedef struct
- {
- sampleRunJoint_POINT_S min, max;
- }BoundingBox_ST;
- class Asj_PE_StandingJump{
- public:
- int init(); // 初始化
- int set(StandingJump_ST standingjump_s); // 根据传入结构体设置参数
- int get(StandingJump_ST *standingjump_s); // 得到当前设置的参数
- int examReset(); // 算法数据清零
- int processPrepare(sampleRunJoint_RESULT_S *mResults, int *prepareStatus); // 输入算法结果进行处理当前帧(用于准备状态)
- int processExam(sampleRunJoint_RESULT_S *mResults, StandingJumpResult_ST *result); // 输入算法结果进行处理当前帧(用于考试状态)
- private:
- cv::Mat M; // 变换矩阵
- sampleRunJoint_POINT_S prePoints; // 历史帧脚后跟坐标
- float staticLimit; // 判断运动状态是否静止的阈值
- int status; // 当前的状态
-
- StandingJump_ST standingjump_st; // 额外设置的结构体
- StandingJumpResult_ST standingjumpResult_st; // 存放统计结果的结构体
- Distance_ST calDistance(sampleRunJoint_POINT_S point1, sampleRunJoint_POINT_S point2); // 计算两个point之间的x,y,xy距离
- cv::Mat transformMask(sampleRunJoint_RESULT_S *mResults, std::vector<int> ids); // 整合Mask
- int processPrepareCPP(sampleRunJoint_RESULT_S *mResults, int &prepareStatus); // 输入算法结果进行处理当前帧(用于准备状态)
- int processExamCPP(sampleRunJoint_RESULT_S *mResults, StandingJumpResult_ST &result); // 输入算法结果进行处理当前帧(用于考试状态)
- };
- #endif
|