asj_pe_standingjump.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef ASJ_STANDINGJUMP_H
  2. #define ASJ_STANDINGJUMP_H
  3. #include <iostream>
  4. #include <string>
  5. #include <unistd.h>
  6. #include <vector>
  7. #include <cmath>
  8. #include <queue>
  9. #include <sys/time.h>
  10. #include <cstring>
  11. #include <algorithm>
  12. #include <limits>
  13. #include <opencv2/opencv.hpp>
  14. #include "dl_api.h"
  15. #include "PEStatus.h"
  16. #include "queue.h"
  17. #include "asj_pe_base.h"
  18. enum SportStatus
  19. {
  20. None,
  21. PREPARE,
  22. JUMP,
  23. END,
  24. };
  25. typedef struct
  26. {
  27. float xDis, yDis, xyDis;
  28. }Distance_ST;
  29. typedef struct
  30. {
  31. sampleRunJoint_POINT_S min, max;
  32. }BoundingBox_ST;
  33. class Asj_PE_StandingJump{
  34. public:
  35. int init(); // 初始化
  36. int set(StandingJump_ST standingjump_s); // 根据传入结构体设置参数
  37. int get(StandingJump_ST *standingjump_s); // 得到当前设置的参数
  38. int examReset(); // 算法数据清零
  39. int processPrepare(sampleRunJoint_RESULT_S *mResults, int *prepareStatus); // 输入算法结果进行处理当前帧(用于准备状态)
  40. int processExam(sampleRunJoint_RESULT_S *mResults, StandingJumpResult_ST *result); // 输入算法结果进行处理当前帧(用于考试状态)
  41. private:
  42. cv::Mat M; // 变换矩阵
  43. sampleRunJoint_POINT_S prePoints; // 历史帧脚后跟坐标
  44. float staticLimit; // 判断运动状态是否静止的阈值
  45. int status; // 当前的状态
  46. StandingJump_ST standingjump_st; // 额外设置的结构体
  47. StandingJumpResult_ST standingjumpResult_st; // 存放统计结果的结构体
  48. Distance_ST calDistance(sampleRunJoint_POINT_S point1, sampleRunJoint_POINT_S point2); // 计算两个point之间的x,y,xy距离
  49. cv::Mat transformMask(sampleRunJoint_RESULT_S *mResults, std::vector<int> ids); // 整合Mask
  50. int processPrepareCPP(sampleRunJoint_RESULT_S *mResults, int &prepareStatus); // 输入算法结果进行处理当前帧(用于准备状态)
  51. int processExamCPP(sampleRunJoint_RESULT_S *mResults, StandingJumpResult_ST &result); // 输入算法结果进行处理当前帧(用于考试状态)
  52. };
  53. #endif